metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-01-22 09:30 pm

Языки программирования? По барабану.

По мотивам срачей с ребе айседом на тему "LISP/Clojure vs Java vs C++ vs Ruby vs Haskell" запишу свои тезисы, чтобы не забыть:

0) Выбор языка программирования - по сараю. Код никто не пишет. 90% работы - это общение с клиентами, писание требований, документирование, объяснение клиентам, почему их требования не имеют смысла, где взять готовый продукт, делающий нужное, и прочая и прочая.
Ход мысли не программиста-фанатика, мыслящего категориями "как и на чем писать", а категориямии руководителя-менеджера "зачем писать, какие ресурсы использовать для этого, какая будет прибыль и какие дальнейшие прибыли или убытки это за собой потянет".

1) Язык программирования не должен мешать программированию и не отправлять стричь яка. Т.е. если мне для реализации проекта внезапно оказывается необходимым общаться лично с автором виндового рунтайма хаскеля - извините, в продакшен непригодно.

2) Основная проблема - это не собственно выполнение работы (по моему, если не лезть в реализацию совсем уж новых концепций программирования, типа "а теперь мы сделаем хаскель, на котором можно писать низкоуровневые драйвера", то все мыслимое и немыслимое уже придумано и сделано, достаточно разобраться, склеить и скомпилировать), а заставить себя взяться за эту работу. Если язык при этом лезет под ноги всяким тупизмом, т.е. в 2012 году ВНЕЗАПНО не работает "искаропки" - отправляется в утиль.

Есть только одно неприятное следствие вышеуказанного: если так думать, заниматься "личными" проектами становится крайне затруднительно. Прибыли от них нет, приобретенное умение программировать уже НЕ НУЖНО, сделать что-то действительно новое и полезное - 90% будет не код, а анализ рынка, реклама, общение с коллегами, клиентами, заказчиками, опен-сорсным комьюнити и прочая.
А писать в стол всякое уныние, коего готового 100500 вариантов - нет вообще никаких стимулов.

Последнее время эта тема напрягает, т.к. я привык постоянно заниматься какими-то "интересными проектами", но постепенно требования к ним в силу моего перфекционизма переросли порог "можно сделать в свободное время не напрягаясь".

[identity profile] thedeemon.livejournal.com 2012-01-23 02:35 am (UTC)(link)
Антитезисы:
-1) Выбор языка программирования очень важен и определяется задачей, ибо то, что у них на выходе имеет очень разные характеристики. Давайте напишите мне годный драйвер на джаваскрипте и эрланге, а webUI на дельфи.
-2) Если "все мыслимое и немыслимое уже придумано и сделано", значит ваша предметная область - говно и торф, или вы не способны придумать ничего лучше того, что уже придумано и сделано.
-3) Заниматься личными проектами имеет смысл теми, что развивают мозг, иначе он скоро превратится в тот же торф. Сделайте "хаскель, на котором можно писать низкоуровневые драйвера", и не станете целевой аудиторией телепрограмм "Аншлаг" и "Комеди Клаб".

[identity profile] metaclass.livejournal.com 2012-01-23 03:22 am (UTC)(link)
Невозможно развивать мозг бессмыслицей, которая делается, не приходя в сознание.
Уровень же "хаскеля" для домашних проектов недостижим.

[identity profile] thedeemon.livejournal.com 2012-01-23 06:40 am (UTC)(link)
Значит нужно приходить в сознание и заниматься не бессмыслицей, хотя бы понемножку. Иначе неиспользуемый орган умрет, останется только ОРТ смотреть.

[identity profile] gineer.livejournal.com 2012-01-23 12:45 pm (UTC)(link)
легче скакзать, чем сделать...

[identity profile] flammar.livejournal.com 2012-01-23 08:47 am (UTC)(link)
Выбор языка программирования

Если не брать игры.

Java или С для написания нативных библиотек под Java. Остальное - говно, как выясняется потом.

Хаскели-хуяскели с глиспами - если только для слоя бизнес-логики, которая потом булет обрабатываться тоже кой-нидь хернёй, написаной на Java. Но и тут часто лучше какая-нидь своя херня на XML.
Edited 2012-01-23 08:47 (UTC)

[identity profile] thedeemon.livejournal.com 2012-01-23 09:13 am (UTC)(link)
Задачи разные бывают, тут спешить и валить все в одну кучу не надо.
Для видеокодеков лучше С++. Для компиляторов лучше функциональщина типа того же Хаскеля или Окамла. Для ойфонов c ойпадами Obj-C. И т.д.

[identity profile] flammar.livejournal.com 2012-01-23 10:54 am (UTC)(link)
Ну, к играм надо было бы еще добавить драйвера и кодеки. То, что в андроиде (который есть поздняя и удачная пародия на Windows.NET/Singularity) нативное.

Для ойфонов c ойпадами Obj-C.

Obj-C - это исторически сложившийся PL для ябельщины, ещё с первых мак-осей. Опять-таки, он более "объектно-ориентированно-образен", чем С++.

[identity profile] gineer.livejournal.com 2012-01-23 12:46 pm (UTC)(link)
\\Для компиляторов лучше функциональщина типа того же Хаскеля или Окамла.

Ждемс ссылки на компиляторы... да хоть того же С на сабже :)))

[identity profile] permea-kra.livejournal.com 2012-01-23 02:13 pm (UTC)(link)
hackage.haskell.org там и си и много чего еще.

[identity profile] gineer.livejournal.com 2012-01-23 03:26 pm (UTC)(link)
спасибо

[identity profile] gineer.livejournal.com 2012-01-23 03:55 pm (UTC)(link)
Compiler

feldspar-compiler library and program: Compiler for the Feldspar language
flite library and programs: f-lite compiler, interpreter and libraries
gf library and program: Grammatical Framework
hcc program: A toy C compiler.
hgom program: An haskell port of the java version of gom
hs2bf program: Haskell to Brainfuck compiler
KiCS library and programs: A compiler from Curry to Haskell
lhc programs: LHC Haskell Compiler
optimusprime program: A supercompiler for f-lite
statechart program: Compiles Rhapsody statecharts to C.
supero program: A Supercompiler
tiger program: Tiger Compiler of Universiteit Utrecht


Это вы так шутите?
Или издеваетесь? :(

[identity profile] thedeemon.livejournal.com 2012-01-23 04:30 pm (UTC)(link)
Как минимум на Хаскеле написаны компиляторы Agda и Epigram - это нынче передний край в теории языков программирования, языки с зависимыми типами. Агда должна быть на hackage.

(no subject)

[identity profile] permea-kra.livejournal.com - 2012-01-23 17:19 (UTC) - Expand

(no subject)

[identity profile] cp-poster.livejournal.com - 2012-01-24 07:43 (UTC) - Expand

[identity profile] permea-kra.livejournal.com 2012-01-23 05:18 pm (UTC)(link)
+ Compiler/Interpreter + Language (partitial)

[identity profile] permea-kra.livejournal.com 2012-01-23 05:19 pm (UTC)(link)
+ Dependent Types

[identity profile] thedeemon.livejournal.com 2012-01-23 03:53 pm (UTC)(link)
Очередной раз реализовывать Си никому не интересно. Поэтому есть варианты покруче:

1. Compcert is a compiler that generates PowerPC, ARM and x86 assembly code from Compcert C, a large subset of the C programming language. The particularity of this compiler is that it is written mostly within the specification language of the Coq proof assistant, and its correctness --- the fact that the generated assembly code is semantically equivalent to its source program --- was entirely proved within the Coq proof assistant.
http://compcert.inria.fr/doc/
(из Coq получается код на окамле после выбрасывания доказательств)

2. http://haxe.org
Язык уровня C# (но с алгебраическими типами, паттерн-матчингом и выводом типов), транслирующийся в JavaScript, Flash (байткод), C++, NekoVM (байткод) и PHP. Компилятор написан на Окамле. Код для Flash генерит намного более эффективный, чем официальный компилятор ActionScript'a. И делает это намного быстрее, чем тот ActionScript'овский компилятор, написанный на джаве.

[identity profile] gineer.livejournal.com 2012-01-23 04:01 pm (UTC)(link)
Угу.
Это пример получше, чем то что мне дали выше.

с http://hackage.haskell.org/packages/archive/pkg-list.html#cat:compiler
:)))))

Compiler
feldspar-compiler library and program: Compiler for the Feldspar language
flite library and programs: f-lite compiler, interpreter and libraries
gf library and program: Grammatical Framework
hcc program: A toy C compiler.
hgom program: An haskell port of the java version of gom
hs2bf program: Haskell to Brainfuck compiler
KiCS library and programs: A compiler from Curry to Haskell
lhc programs: LHC Haskell Compiler
optimusprime program: A supercompiler for f-lite
statechart program: Compiles Rhapsody statecharts to C.
supero program: A Supercompiler
tiger program: Tiger Compiler of Universiteit Utrecht

[identity profile] gineer.livejournal.com 2012-01-23 12:47 pm (UTC)(link)
\\Для ойфонов c ойпадами Obj-C.

Это выбор фирмы, а не самый лучшый технически вариант.
Им просто лень было что-то новое писать.

[identity profile] thedeemon.livejournal.com 2012-01-23 03:43 pm (UTC)(link)
выбор не всегда определяется техникой. иногда вот так политикой

[identity profile] gineer.livejournal.com 2012-01-23 03:59 pm (UTC)(link)
да причем тут политика?
обычный легаси-код

[identity profile] thedeemon.livejournal.com 2012-01-23 04:23 pm (UTC)(link)
У эппла есть (или была?) строгая политика на чем можно писать под ойфоны, а на чем нельзя. Ну и родной интерфейс под мак вроде только на Obj-C делается.

(no subject)

[identity profile] gineer.livejournal.com - 2012-01-23 17:40 (UTC) - Expand

[identity profile] cp-poster.livejournal.com 2012-01-24 07:46 am (UTC)(link)
Лол, нуда-нуда. Но им было не лень сначала вкручивать ObjC в gcc, а потом писать Clang.

[identity profile] flammar.livejournal.com 2012-01-23 05:12 pm (UTC)(link)
Ну есть ещё COM с VB для гиков.

Всё постепенно переносится в web, а web - это на 90% либо Java либо web-сервисы или web-api с клиентом на JS под браузер.

[identity profile] serbod.livejournal.com 2012-01-23 12:14 pm (UTC)(link)
webUI на дельфи? Посмотри IntraWeb =)

[identity profile] flammar.livejournal.com 2012-01-23 04:45 pm (UTC)(link)
Всё равно не совместима с нормальным дельфи.