о том, какие языки учить (компьютерное)
Jan. 25th, 2013 10:25 amМнение Джо Армстронга, создателя языка Эрланг:
Хотя, в общем-то, я двадцать лет этим занимаюсь, и не все языки из этого списка знаю (а зря; я сам может быть по-другому составил бы список, но все эти языки заслуживают внимательного изучения).
What would I recommend learning?Если по два года на строку, то получается 14 лет, хотя, может, он позволит некоторые из них одновременно?
- C
- Prolog
- Erlang (I'm biased)
- Smalltalk
- Javascript
- Haskell/ML/OCaml
- LISP/Scheme/Clojure
A couple of years should be enough (PER LANGUAGE).
Notice there is no quick fix here - if you want a quick fix go buy "learn PHP in ten minutes" and spend the next twenty years googling for "how do I compute the length of a string"
Хотя, в общем-то, я двадцать лет этим занимаюсь, и не все языки из этого списка знаю (а зря; я сам может быть по-другому составил бы список, но все эти языки заслуживают внимательного изучения).
no subject
Date: 2013-01-25 08:30 am (UTC)no subject
Date: 2013-01-25 08:35 am (UTC)2. ФОРТРАН: всё, что нужно для того, чтобы СЧИТАТЬ и ВЫЧИСЛЯТЬ
3. Алгол: надо же теоретикам-алгоритмистам объясняться друг с другом (не машину же Тьюринга заводить!)
4. Паскаль, для девочек и тинэйджеров, - что хочу, то и нарисую...
5. HTML для гламурных
6. ТеХ для заумных...
no subject
Date: 2013-01-25 08:46 am (UTC)no subject
Date: 2013-01-25 08:54 am (UTC)Во-первых, непонятна задача. Для чего учить? Если для того, чтобы небрежно обронить при случае, "я знаю карате, кунфу, дзюдо, джиуджитсу и много других страшных слов" - то да, список подходит идеально. Для веб-разработки же, скажем, РНР - лучшее из упомянутого.
Во-вторых, по факту фрейворк играет куда большую роль, чем базовый язык. Скажем, на определенные позиции весь список не будет стоить знания MFC.
Плюс опыт в предметной области. Умение без помощи гугля узнать длину строки слабо поможет при проблемах с БД или каким-нибудь специализированным протоколом.
no subject
Date: 2013-01-25 08:57 am (UTC)Пост интересен тем, что показывает что же на самом деле изменилось в программировании и что он пропустил из-за консервативности. С современными IDE совершенно не нужно помнить как же получить длину строки - забыл size() это или length()? Нажми кнопку и IDE подскажет.
Вообще для большей части программирования нынче концепция "изучить все наизусть за два года" больше не работает - ну вот, захотел человек, например, научиться для Андроида программировать - так за два года все поменялось три раза. Остается только сразу сдаваться и запоминать что и где гуглить.
no subject
Date: 2013-01-25 09:06 am (UTC)no subject
Date: 2013-01-25 09:09 am (UTC)no subject
Date: 2013-01-25 09:17 am (UTC)Если же речь об эффективном сапании картошки в опердени (это не дразнилка, я сам такой), то, конечно, библиотеки и имеющиеся наработки важнее конкретного языка.
no subject
Date: 2013-01-25 09:52 am (UTC)no subject
Date: 2013-01-25 10:23 am (UTC)Мне кажется, что Армстронг не имеет в виду "выучить все стандартные библиотеки за два года" - это безумие их даже пытаться выучивать наизусть. Наверное, он имеет в виду, что за два года понимаешь слабые и сильные стороны языка и его экосистемы, начинаешь писать на нем в полную силу. Сформулирую это так: в T=2 года посмотрите на свой код, написанный в T=1 месяц; и в T=4 года посмотрите на свой код, написанный в T=2 года. Если в первом случае реакция ужас-ужас, а во втором намного более умеренная (пусть даже недовольство), то Армстронг прав.
ИМХО
Date: 2013-01-25 10:37 am (UTC)В списке представлены языки из разных категорий: императивные, с ООП, декларативные, функциональные, смешанные. Понятно, что, в принципе, большинство задач можно решить на всём, но люди стараются подбирать инструменты (языки) наиболее подходящие для конкретных задач или расширять имеющиеся механизмы уже выбранного языка чем-то полезным из какого-нибудь другого языка, в частности и Domain Specific Languages изобретают из имеющихся кубиков.
Побочным эффектом серьёзного и длительного использования чего-нибудь маленького и примитивного типа Си или Лиспа является более глубокое понимание того, как работает процессор, комп, ОС и всякие разные библиотеки и фреймворки, что там внутри и как оно вертится. Это помогает с отладкой, и с оптимизацией, и с дизайном.
Чем лучше знаком арсенал инструментов, тем в общем лучше, хотя это может и не помочь в отдельных конкретных случаях, когда, например, просто не понятно как решать задачу в принципе. Помимо языков ведь ещё есть алгоритмы и тьма-тьмущая математики, знание и понимание которых периодически пригождается.
no subject
Date: 2013-01-25 10:41 am (UTC)no subject
Date: 2013-01-25 10:44 am (UTC)no subject
Date: 2013-01-25 10:45 am (UTC)no subject
Date: 2013-01-25 10:53 am (UTC)По поводу собственного прогресса как ф-цию от времени - правда. Он должен быть виден. Но, что интересно, я недавно вспомнил, как когда я только начинал программировать, то многое старался описать одной большой универсальной формулой™. Такие формулы часто вычислялись слишком медленно, т.к. компилятор и комп были слабы чтобы обеспечить возможную оптимизацию. И я стал оптимизировать ручками. Сейчас компиляторы и компы мощнее, и можно снова писать большие универсальные формулы™, а функциональное программирование так и вообще, похоже, считает это нормой.
no subject
Date: 2013-01-25 10:57 am (UTC)no subject
Date: 2013-01-25 10:57 am (UTC)Если бы не эта фраза, можно было бы подумать, что вы говорите серьёзно.
no subject
Date: 2013-01-25 10:59 am (UTC)no subject
Date: 2013-01-25 11:00 am (UTC)А мобно пример какой нибудь такой заковырки? А т
no subject
Date: 2013-01-25 11:01 am (UTC)no subject
Date: 2013-01-25 11:12 am (UTC)Я уж не говорю про замечательный синтаксис языка, доставляющий радости и счастья.
Если бы надо было изобретать C сегодня, то надо было сделать что-то типа Go. Впрочем, он наверное и есть вариант современного C.
no subject
Date: 2013-01-25 11:28 am (UTC)no subject
Date: 2013-01-25 11:29 am (UTC)no subject
Date: 2013-01-25 11:40 am (UTC)no subject
Date: 2013-01-25 12:00 pm (UTC)И что в ней несерьёзного самой по себе.
Возможно, с академической точки зрения пых не так хорош, как Лисп, но сточки зрения экосистемы и решаемой задачи он - вне конкуренции.
Это очень похоже на ситуацию с натуральными языками. Логлан или эсперанто - вне сомнения - языки с более продуманными правилами и логичной структурой, чем английский или русский. Но если тебе не для хобби, а для общения или работы... ;)