Интересное мнение про Haskell
Oct. 28th, 2011 06:34 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
http://neugierig.org/software/blog/2011/10/why-not-haskell.html
http://www.reddit.com/r/programming/comments/lfm1k/why_not_haskell/
У меня на данный момент с хаскелем забавный мозговой тупик: не совсем понимаю, как писать идиоматический код.
Т.е. например, разговор с девайсом по RS232 я могу написать в лоб, со сплошным IO, могу оформить с кошерными iteratees (хотя от типов и там и в coroutines глаза кровоточат), по идее, если покопаться, можно придумать еще несколько способов "красиво, строго, надежно" оформить разговор по известному протоколу, но в итоге то, что подразумевает повторное использование и статические гарантии, выглядит как ад из типов, а то что понятно - выглядит точно так же, как эта самая программа написанная на другом языке, с точностью до синтаксиса )
Вообще, от софта хочется простого: кроссплатформенность(винда/линукс), никаких JRE/Mono/CLI/интерпретаторов питонов/рубей, минимум зависимостей, отсутствие ручной работы с выделением-удалением памяти, нормальные строки, более-менее строгие типы.
http://www.reddit.com/r/programming/comments/lfm1k/why_not_haskell/
У меня на данный момент с хаскелем забавный мозговой тупик: не совсем понимаю, как писать идиоматический код.
Т.е. например, разговор с девайсом по RS232 я могу написать в лоб, со сплошным IO, могу оформить с кошерными iteratees (хотя от типов и там и в coroutines глаза кровоточат), по идее, если покопаться, можно придумать еще несколько способов "красиво, строго, надежно" оформить разговор по известному протоколу, но в итоге то, что подразумевает повторное использование и статические гарантии, выглядит как ад из типов, а то что понятно - выглядит точно так же, как эта самая программа написанная на другом языке, с точностью до синтаксиса )
Вообще, от софта хочется простого: кроссплатформенность(винда/линукс), никаких JRE/Mono/CLI/интерпретаторов питонов/рубей, минимум зависимостей, отсутствие ручной работы с выделением-удалением памяти, нормальные строки, более-менее строгие типы.
no subject
Date: 2011-10-28 03:58 pm (UTC)Впрочем, если не извращаться, скорее всего, и на плюсах можно нормально писать.
no subject
Date: 2011-10-28 04:07 pm (UTC)Потому что из списка придется смириться с "отсутствие ручной работы с выделением-удалением памяти" но это вообщем не проблема а с шаред_птр всякими и того проще.
Зато оно будет работать без магии.
no subject
Date: 2011-10-28 04:17 pm (UTC)По мне так C++ более автоматизирован чем pure C, но не приобрел неповоротливости языков класса Java. Что-то типа золотой середины. Но YMMV, как обычно.
no subject
Date: 2011-10-28 05:01 pm (UTC)no subject
Date: 2011-10-28 05:19 pm (UTC)no subject
Date: 2011-11-07 08:02 pm (UTC)no subject
Date: 2011-10-28 06:58 pm (UTC)если вы пишете на каком то говне - ваши проблемы, пишите. если при этом вы считаете говно хорошим и красивым - вы опасны для окружающих, сходите в дурку.
no subject
Date: 2011-10-28 07:03 pm (UTC)no subject
Date: 2011-10-28 07:38 pm (UTC)no subject
Date: 2011-10-29 07:40 am (UTC)no subject
Date: 2011-10-30 08:32 am (UTC)no subject
Date: 2011-11-07 08:01 pm (UTC)no subject
Date: 2011-10-28 07:06 pm (UTC)писал год на нем, не прижилось, хотя платили неплохо
в любой вещи есть свои недостатки, поэтому я и говорю про YMMV. для каких-то задач плюсы годятся, для каких-то не очень.
у меня тут пол офиса укушенных, так они на objective-c пишут и тоже от плюсов нос воротят. я пробовал - у меня получается в три раза медленнее чем на плюсах. а на чистых сях - в два раза дольше.
no subject
Date: 2011-10-28 07:08 pm (UTC)no subject
Date: 2011-10-28 07:12 pm (UTC)no subject
Date: 2011-10-28 07:20 pm (UTC)no subject
Date: 2011-10-28 11:17 pm (UTC)Если уж хочется чего-то правильного -- тогда ерлангъ
PS Кстати может и правда, давайте ребе метаклассу еролангъ присоветуем
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2011-10-28 07:13 pm (UTC)извинте, сразу стрелять, не разговаривая.
ну и вот. идиоматический цэскрестиками. прямо из буста
(BOOL)isEmptyString:(NSString*)string {
return string == nil
|| string == NSNull
|| string == (NSString*)kCFNull
|| [[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] isEqualToString:@""];
}
</pre>
извинте, сразу стрелять, не разговаривая.
<pre>
perl -e "%a = {1 => 2, 3 => 4}; print '' . %a;"
1/8
</pre>
ну и вот. идиоматический цэскрестиками. прямо из буста
<pre>
template<lt;
typename R,
BOOST_SIGNALS_TEMPLATE_PARMS
BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
typename Combiner,
typename Group,
typename GroupCompare,
typename SlotFunction
>gt;
typename BOOST_SIGNALS_SIGNAL<lt;
R, BOOST_SIGNALS_TEMPLATE_ARGS
BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
Combiner, Group, GroupCompare, SlotFunction>gt;::result_type
BOOST_SIGNALS_SIGNAL<lt;
R, BOOST_SIGNALS_TEMPLATE_ARGS
BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
Combiner, Group, GroupCompare, SlotFunction
>gt;::operator()(BOOST_SIGNALS_PARMS) const
{
// Notify the slot handling code that we are making a call
BOOST_SIGNALS_NAMESPACE::detail::call_notification notification(this->gt;impl);
// Construct a function object that will call the underlying slots
// with the given arguments.
#if BOOST_SIGNALS_NUM_ARGS == 0
BOOST_SIGNALS_ARGS_STRUCT_INST args;
#else
BOOST_SIGNALS_ARGS_STRUCT_INST args(BOOST_SIGNALS_ARGS);
#endif // BOOST_SIGNALS_NUM_ARGS >gt; 0
call_bound_slot f(&args);
typedef typename call_bound_slot::result_type call_result_type;
optional<lt;call_result_type>gt; cache;
// Let the combiner call the slots via a pair of input iterators
return combiner()(slot_call_iterator(notification.impl->gt;slots_.begin(),
impl->gt;slots_.end(), f, cache),
slot_call_iterator(notification.impl->gt;slots_.end(),
impl->gt;slots_.end(), f, cache));
}
} // namespace boost
</pre>
no subject
Date: 2011-10-28 07:15 pm (UTC)no subject
Date: 2011-10-28 07:15 pm (UTC)no subject
Date: 2011-10-29 08:33 am (UTC)(no subject)
From:no subject
Date: 2011-10-29 10:37 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2011-10-28 07:16 pm (UTC)no subject
Date: 2011-11-07 08:08 pm (UTC)Та же хрень с Obj-C. Там есть грабли, но при наличии опыта маковские гуи пишутся удобно и просто, без напряжения серого вещества, если просто следовать примерам из мануалов. И все. Желания фанатично тащить этот язык в другие области не возникало и вряд ли возникнет.
no subject
Date: 2011-11-07 11:04 pm (UTC)