metaclass: (Default)
[personal profile] metaclass
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/интерпретаторов питонов/рубей, минимум зависимостей, отсутствие ручной работы с выделением-удалением памяти, нормальные строки, более-менее строгие типы.

Date: 2011-10-28 03:58 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Сейчас придет айсед и скажет все что он думает про плюсы :)
Впрочем, если не извращаться, скорее всего, и на плюсах можно нормально писать.

Date: 2011-10-28 04:07 pm (UTC)
From: [identity profile] fas-tm.livejournal.com
вообщем то это действительно меньшее из зол.
Потому что из списка придется смириться с "отсутствие ручной работы с выделением-удалением памяти" но это вообщем не проблема а с шаред_птр всякими и того проще.
Зато оно будет работать без магии.

Date: 2011-10-28 04:17 pm (UTC)
From: [identity profile] vaddimka.livejournal.com
Айсед достаточно многие вещи считает говном. Насколько я понимаю, он админ, а не программист. Я ценю наличие ярко выраженного субъективного мнения у людей, но все-таки многое из этого приходится фильтровать.

По мне так C++ более автоматизирован чем pure C, но не приобрел неповоротливости языков класса Java. Что-то типа золотой середины. Но YMMV, как обычно.

Date: 2011-10-28 05:01 pm (UTC)
From: [identity profile] paranoekk.livejournal.com
Если так внимательно посмотреть, то все успешные люди, которые чего-то добились реально и получают от жизни кайф, ведут себя очень скромно. А школотообразное поведение айседа рисует ему очень хреновый имидж несостоявшегося человека с комплексами, которого жестко обижали в школе одноклассники. При чем безотносительно насколько это реально имеет место.

Date: 2011-10-28 05:19 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Айсед программист :)

Date: 2011-11-07 08:02 pm (UTC)
From: [identity profile] noop.livejournal.com
А вы кавычки пропустили.

Date: 2011-10-28 06:58 pm (UTC)
From: [identity profile] theiced.livejournal.com
про какую из вещей обосновать что она говно? я вон утром М обосновал что перл говно.

если вы пишете на каком то говне - ваши проблемы, пишите. если при этом вы считаете говно хорошим и красивым - вы опасны для окружающих, сходите в дурку.

Date: 2011-10-28 07:03 pm (UTC)
From: [identity profile] theiced.livejournal.com
ах, цэскрестиками. ну сходите исходники буста почитайте. ну или объясните зачем мне язык стандарт которого продаётся за деньги и занимает вроде больше тыщи страниц.

Date: 2011-10-28 07:38 pm (UTC)
From: [identity profile] permea-kra.livejournal.com
Хуй с ним, что он тысячу страниц. Вы мне скажите, сколько компиляторов его полностью поддерживают ?

Date: 2011-10-29 07:40 am (UTC)
From: [identity profile] theiced.livejournal.com
ноль.

Date: 2011-10-30 08:32 am (UTC)
From: [identity profile] nivanych.livejournal.com
Как говориццо, "Но мы его любим не за это!" ;-) ;-)

Date: 2011-11-07 08:01 pm (UTC)
From: [identity profile] noop.livejournal.com
В теории плюсы говно. На практике у каждого программиста на плюсах есть любимое подмножество языка, которое вполне себе работает.

Date: 2011-10-28 07:06 pm (UTC)
From: [identity profile] vaddimka.livejournal.com
ну вот перл, например, мне тоже не нравится :)
писал год на нем, не прижилось, хотя платили неплохо

в любой вещи есть свои недостатки, поэтому я и говорю про YMMV. для каких-то задач плюсы годятся, для каких-то не очень.

у меня тут пол офиса укушенных, так они на objective-c пишут и тоже от плюсов нос воротят. я пробовал - у меня получается в три раза медленнее чем на плюсах. а на чистых сях - в два раза дольше.

Date: 2011-10-28 07:08 pm (UTC)
From: [identity profile] theiced.livejournal.com
про обжцэ я ша у себя поишу.

Date: 2011-10-28 07:12 pm (UTC)
From: [identity profile] vaddimka.livejournal.com
objective-c хорош для макоебских гуев, у нас просто локально на них зачем-то серверную часть товарищи пишут. и их много. это меня пугает.

Date: 2011-10-28 07:20 pm (UTC)
From: [identity profile] theiced.livejournal.com
обжцэ плох абсолютно для всего (как и цэскрестикми). тот же хаскель вполне себе хорошо для мелких задачек класса дёрнуть-страничку-попарсить-насрать-в-базу.

Date: 2011-10-28 11:17 pm (UTC)
From: [identity profile] avnik.livejournal.com
А как хацкель-для-уеба будет под нагрузкой жить? Ну хотя бы под минимальной?

Если уж хочется чего-то правильного -- тогда ерлангъ

PS Кстати может и правда, давайте ребе метаклассу еролангъ присоветуем

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2011-10-29 07:37 am (UTC) - Expand

(no subject)

From: [identity profile] kurilka.livejournal.com - Date: 2011-10-29 08:00 am (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2011-10-29 08:06 am (UTC) - Expand

(no subject)

From: [identity profile] kurilka.livejournal.com - Date: 2011-10-29 08:11 am (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2011-10-29 08:13 am (UTC) - Expand

(no subject)

From: [identity profile] kurilka.livejournal.com - Date: 2011-10-29 08:27 am (UTC) - Expand

Date: 2011-10-28 07:13 pm (UTC)
From: [identity profile] theiced.livejournal.com
(BOOL)isEmptyString:(NSString*)string {
    return string == nil 
    || string == NSNull
    || string == (NSString*)kCFNull
    || [[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] isEqualToString:@""];
}


извинте, сразу стрелять, не разговаривая.

perl -e "%a = {1 => 2, 3 => 4}; print '' . %a;"
1/8


ну и вот. идиоматический цэскрестиками. прямо из буста

  template
[Error: Irreparable invalid markup ('<lt;>') in entry. Owner must fix manually. Raw contents below.]

<pre>
(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>

Date: 2011-10-28 07:15 pm (UTC)
From: [identity profile] theiced.livejournal.com
ещё раз. крестики.

  template<
    typename R,
    BOOST_SIGNALS_TEMPLATE_PARMS
    BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
    typename Combiner,
    typename Group,
    typename GroupCompare,
    typename SlotFunction
  >
  typename BOOST_SIGNALS_SIGNAL<
             R, BOOST_SIGNALS_TEMPLATE_ARGS
             BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
             Combiner, Group, GroupCompare, SlotFunction>::result_type
  BOOST_SIGNALS_SIGNAL<
    R, BOOST_SIGNALS_TEMPLATE_ARGS
    BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
    Combiner, Group, GroupCompare, SlotFunction
  >::operator()(BOOST_SIGNALS_PARMS) const
  {
    // Notify the slot handling code that we are making a call
    BOOST_SIGNALS_NAMESPACE::detail::call_notification notification(this->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 > 0

    call_bound_slot f(&args);

    typedef typename call_bound_slot::result_type call_result_type;
    optional<call_result_type> cache;

    // Let the combiner call the slots via a pair of input iterators
    return combiner()(slot_call_iterator(notification.impl->slots_.begin(),
                                         impl->slots_.end(), f, cache),
                      slot_call_iterator(notification.impl->slots_.end(),
                                         impl->slots_.end(), f, cache));
  }
} // namespace boost


Date: 2011-10-28 07:15 pm (UTC)
From: [identity profile] theiced.livejournal.com
перл

perl -e "%a = {1 => 2, 3 => 4}; print '' . %a;"
1/8

Date: 2011-10-29 08:33 am (UTC)
From: [identity profile] black-angel-by.livejournal.com
перл красив лаконичностью :)

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 08:45 am (UTC) - Expand

Date: 2011-10-29 10:37 am (UTC)
From: [identity profile] tzirechnoy.livejournal.com
Я так и не понял, что ты имел в виду, приводя пример безсмысленного перлового кода.

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 02:53 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-29 03:35 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 03:37 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-30 08:07 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-30 08:09 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 03:21 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-29 03:38 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 03:42 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-30 08:01 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-30 08:09 am (UTC) - Expand

Date: 2011-10-28 07:16 pm (UTC)
From: [identity profile] theiced.livejournal.com
обжцэ.

(BOOL)isEmptyString:(NSString*)string {
return string == nil 
|| string == NSNull
|| string == (NSString*)kCFNull
|| [[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] isEqualToString:@""];
}

Date: 2011-11-07 08:08 pm (UTC)
From: [identity profile] noop.livejournal.com
Когда я в юности перестал писать на паскале и перешел на C, не мог написать циклы и присваивания без ошибки, такова сила привычки.
Та же хрень с Obj-C. Там есть грабли, но при наличии опыта маковские гуи пишутся удобно и просто, без напряжения серого вещества, если просто следовать примерам из мануалов. И все. Желания фанатично тащить этот язык в другие области не возникало и вряд ли возникнет.

Date: 2011-11-07 11:04 pm (UTC)
From: [identity profile] vaddimka.livejournal.com
воот! для гуев objective-c хорошо подходит, я не знаю зачем у нас на них серверную часть пишут.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 24th, 2025 02:11 am
Powered by Dreamwidth Studios