понедельник, 29 июня 2015 г.

[prog.flame] Из относительно свежего, но непонятого с профильных форумов

Давно ничего не писал на тему программизма. Особенно и нечего было писать. Работа над приоритетами в SO-5.6 идет туго, но, надеюсь, все-таки идет. Плюс ушло несколько дней на перелопачивание и обработку большого количества фотографий (блин, фотограф -- это нисколько не простая профессия). Но вот на RSDN и LOR-е всплыло две темы, которые оставили меня в полном недоумении.

Первая тема -- это эпическое проявление маразма в RSDN-овских священных войнах под названием "Эрланг и все-все-все (на самом деле, не совсем)". Могу ошибаться, но в мою бытность RSDN-ером тов.Mamut казался вполне вменяемым. Но, боюсь, время обошлось с ним очень жестоко. Либо же это форум flame.comp наложил какое-то проклятие.

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

  • во-первых, все страшилки вокруг ручной работы с низкоуровневыми примитивами синхронизации, вроде mutex-ов, они же не от хорошей жизни происходят. А от самого факта наличия мутабельного разделяемого состояния. Уберите это состояние и многопоточное программирование превратится в сказку. Что, собственно, и происходит в Erlang-е, где используется архитектура share nothing. К сожалению, во многих областях такой сказки никогда не достичь. От мутабельного состояния не избавиться, а отсюда и все пляски с бубном. Соответственно, пока для борьбы с мутабельным состоянием не придумают ничего лучше низкоуровневых примитивов синхронизации, стандартная поставка мейнстримовых языков будет содержать только эти самые низкоуровневые примитивы и все. Может, когда STM докажет свою применимость в широком спектре задач, и STM станет частью стандартов. Может еще что-нибудь придумают. Но пока живем с тем, что есть и это прямое следствие неизбежной необходимости работать с мутабельным разделяемым состоянием;
  • во-вторых, мне лично совершенно не понятен смысл противопоставления Erlang-а всему остальному миру. Ну действительно, зачем это нужно? Ну, допустим, признают форумчане, что только Erlang имеет комплексное решение возникающих при многопоточном программировании проблем. И что дальше?

Вот этот второй пункт он самый важный. Одно дело, если цель флейма на RSDN -- это почесать ЧСВ тов.Mamut-а. Мол да, парень, ты в свое время выбрал правильный язык, в котором все есть и ты решаешь сложные задачки как будто орешки щелкаешь. А мы, лузеры и ламеры, продолжаем сидеть и жрать кактус...

Другое дело, если цель топика привлечь внимание коллег. Мол, посмотрите, вот так правильно, удобно, дешево, сердито и вообще, модно и молодежно.

Ok, допустим, посмотрели и сказали: "Да, так дешево и сердито!" Но что дальше? Все ломануться на Erlang? Начнут участвовать в разработке новых стандартов языков программирования?

Слишком очень уж много вопросов оставляет без ответов этот топик на RSDN. В том числе вопросов об адекватности и квалификации некоторых участников. А все вместе это складывается в большой вопрос "Ну как же так можно?!!!"


Вторая непонятная для меня тема -- это тема неприятия C++ на профильных форумах. Мне вот интересно: когда кто-нибудь делает анонс какой-то библиотеки для JavaScript или Scala, приходят ли в эту тему анонимные проффи, которые начинают рассказывать автору библиотеки, какое же говно этот JavaScript (или Scala)? И, с большой долей вероятности, станут проповедовать Lisp (не важно, в каком именно из диалектов).

Не, ну правда интересно. Я за библиотеками вне C++ не слежу, поэтому не знаю, бывает ли такое.

А вот в C++ за примерами далеко ходить не нужно. Совсем свежий -- это анонс CrystaX NDK на LOR-е. Прям эталон.

Я вот не могу понять, почему сейчас, в 2015-м (в две тысячи пятнадцатом, блин, не в девяносто пятом и даже не в две тысячи пятом, а в две тысячи пятнадцатом!) находится столько обиженных C++ом. На самом деле, почему так?

Можно понять тех, кто программировал на C++ в начале 90-х. Когда стандартом еще не пахло, качество компиляторов оставляло желать лучшего, статических анализаторов и других диагностических инструментов почти не было. Да и книг, которые бы рассказывали что к чему тоже.

И при этом всем реальной альтернативы C++, по крайней мере на ПК, особенно-то и не было. Если не брать области, для которых идеально подходили dBase/FoxBase/Clipper/Clarion-ы (а это тот самый CRUD, вокруг которого сейчас клепают фреймворки для Web-а), то на чем еще можно было вести разработку? Тут либо C++, либо ObjectPascal. Это уже потом мощность ПК значительно выросла и подтянулись сначала Java, потом C#, а потом и куча динамических языков. А в начале 90-х либо ты легко и непринужденно пишешь на, скажем, SmallTalk-е, а потом твой пользователь скучает, пока программа работает. Либо же C++ с отладчиком в зубы, но зато у пользователя хоть что-то шевелится.

Да, в те времена многие себе шишек на C++ набили. Но сейчас-то что? Для многих областей C++ уже лет 15 как не актуален. Многие нынешние программисты, взращенные на буме оффшорного программирования в СНГ, у которых профессионального стажа не более 10 лет, -- они и C++-то в глаза толком не видели. Даже во время учебы, не говоря уже про реальные проекты.

Так почему все время находятся желающие бросаться в C++ какашками?

Или это мне просто так кажется? Потому, что сам сижу в мире C++ и самому приходится уворачиваться от того, что на вентилятор набрасывают?

Комментариев нет: