Новыя языки

Aug 04, 2011 23:42

Читал на днях про Go, язык программирования от Google. Товарищи сначала хотели сделать осовремененный аналог C - очень простой язык с минимумом извратов. Но жизнь буквально заставляет их наступать на горло собственной песне и добавлять фичи. Особенно видно на примере exception-ов. Сначала в FAQ они отвечают на вопрос, почему у них нет exception-ов ( Read more... )

программирование

Leave a comment

Comments 8

blueher August 5 2011, 05:17:56 UTC
ЕМНИП паники/рекаверы были в Go с самого начала, только не было хорошей внятной документации по ним.

Кстати, понравилась фраза создателей языка - типа нам часто говорят что наш язык "некрутой" потому что в нём нет тех-то или тех-то фич, так мы всё время отвечаем что мы не делаем крутой язык, мы делаем язык на котором нам самим (и, надеемся, кому-то ещё) будет просто и удобно программировать.

PS а паники кстати лучше exception-ов потому что они действуют на уровне горутины а не потока. Т.е. unhandled panic убьёт горутину а не весь поток к чёртовой матери. Говорят фича слизана с эрланга с его акторами, но я в нём не спец, судить не могу.

Reply


osdm August 5 2011, 14:15:46 UTC
Получается, что язык у них будет сугубо субъективным. То, что они используют в работе, у них будет сделано отлично, а то, что не используют - хреново. Это сильно ограничивает область применения языка. Например, программист, пишуший ядро ОС, может никогда не использовать exception-ы; программист, пишущий серверный код, обычно не использует схему subject-observer; программист, не пишущий web-приложений, может не использовать процедуры манипуляции со строками и т.п. В итоге мы имеем C++ и Java, в которых не было event/delegate (авторы не писали десктопных приложений), не имеем ни одного языка, в котором бы HTML/SQL строки имели бы тип, отличный от пользовательских строк (авторам не приходилось бороться с injection-ами), и имеем весьма кастрированные generic-и в той же Java и их отсутствие в Go. Нет, если вы сейчас разрабатываете новый язык, то постарайтесь продумать сценарии его использования в самых разных ситуациях и ориентируйте его на практическое удобство программирования в этих ситуациях вместо ориентации исключительно на ( ... )

Reply

blueher August 8 2011, 05:15:25 UTC
> То, что они используют в работе, у них будет сделано отлично, а то, что не используют - хреново.

Я думаю что Ваши опасения напрасны :) Дело в том что даже написание тулчейна для своего языка (компилятор-линкер-отладчик-и т.д.) - это уже такой огромный пласт работы который худо бедно покроет все юзкейсы для языка которые только можно придумать. К тому же Go теперь есть ещё и для Google App Engine, что позволяет работать с ним с ещё одной стороны. К тому же не надо бояться нишевых языков - многие из языков которые сейчас популярны в определённый момент своего развития были нишевыми.

Reply

osdm August 8 2011, 06:14:25 UTC
Если я не ошибаюсь, компилятор они написали на C. А Google App Engine - это и есть тот ограниченный use case, на который они изначально и затачивались. Но вопрос даже не в том, где они будут его применять, а в том, будут ли они готовы менять свой язык под эти применения. Вот, скажем, на Java в итоге написали много десктопных приложений, но его создатели категорически отказались добавлять туда механизм event/delegate, да и generic-и c enum-ами добавили в итоге по прошествии многих лет и под давлением C#. Есть у людей такая особенность - нежелание признавать свои ошибки. Поэтому во многом вопрос не в том, где они будут применять Go после его создания, а в том, какие use-case они рассматривали на момент создания и насколько подробно. Рекомендую обратить внимание на одну мелочь Go - отсутствие assert-ов и пояснения авторов по этому поводу. Уже одно это говорит очень о многом.

Reply


blueher August 8 2011, 07:42:42 UTC
> Если я не ошибаюсь, компилятор они написали на C.
Ошибаетесь. У них есть как сишный (бутстраповый) компилятор так и написаный на самом Go. (Уже наличие двух компиляторов говорит о серьёзности подхода к разработке - у них есть целых две референсных имплементации языка).

> будут ли они готовы менять свой язык под эти применения.
> какие use-case они рассматривали на момент создания и насколько подробно.
Ну они старые дядьки с огромным опытом в этой области. Я прекрасно понимаю что это не гарантирует того что они не могут облажаться, но всё же внушает в меня оптимизм. Я вообще очень (возможно, излишне) оптимистичен по поводу Go - я в нём с самого начала увидел убийцу ненавидимого мной с++, причём этот убийца именно такой каким я мечтал его видеть.

Reply

osdm August 8 2011, 12:53:00 UTC
Солидарен в ненависти к C++. Было бы неплохо, чтобы Go его действительно заменил, но я пока скептичен на этот счет.

Reply

blueher August 8 2011, 13:17:18 UTC
Ну как по мне сейчас для того чтобы гоу начал потихоньку отжирать нишу у С++ не хватает двух вещей:

1. Появления IDE уровня хотя бы MSVC+Visual Assist. При том что IDE нынче клепаются быстро (по сравнению с тем же процессом 10-летней давности) на основе Eclipse/Idea и т.п. - это вопрос времени, год-другой и всё зашевелится.
2. Появления большого опенсорсного проекта в котором Go будет юзаться на всю катушку. К примеру, кабы гугловцы взяли да и написали свой вариант WebKit-а на нём. Это повлекло бы за собой появление кучи мелких полезных библотечек которые бы стали стандартом де-факто. Тоже вопрос времени, но тут надо пару лет чтобы проект зажил и зашевелился.

Reply


Leave a comment

Up