Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2009-11-21

Let's Go

Благодаря посту одного хорошего человека, я узнал про других хороших людей. Что не может не радовать.
Людям хочется сделать C, но лучше. Завидую. Завидую тому, что у них достаточно мозгов, времени и денег, чтобы заниматься этим интересным и малоперспективным (ясен пончик, IMHO) делом.
Как я понял, ваяют язык именно системного программирования, ну там драйверы, оп.системы, инструментарий, СУБДы и всякое такое. Не для того, чтобы манипулировать элементами DOM в браузере, к примеру.


Что особо интересно (выцепил, читая FAQ-и):


Языком занимается Ken Thompson.
Этот точно может сделать Си, но лучше.

Ощущается как динамический язык, но скорость и безопасность (безопасность? вот так?) у него, как у статического языка.
Типа, пишется как на яваскрипте, а результат как на Си.

Система типов не имеет иерархии.
Вообще, хорошее решение. Лично мне никогда особо не надо было применять наследование, хотя академически это красиво. Правда, без иерархии придется часть кода повторять, посмотрим, как с этим справятся.

Это попытка уменьшить количество типизаций и печатных знаков. Нет упреждающего обьявления и заголовочных файлов, всё обьявляется только раз, инициализация (переменных) выразительна, автоматизирована и легка в использовании. Заикание типа
Topobase.Tracing.Algorithms.Reachability rb = new Topobase.Tracing.Algorithms.Reachability();
(это вот заикание лично меня бесит безмерно, а теперь будет типа так:
rb := Topobase.Tracing.Algorithms.Reachability();)
снижено через конструкцию "обьяви-и-инициализируй". Типам не надо разьяснять их взаимоотношений, они (типы) просто есть, никакой иерархии.

Принцип ортогональности концептов. Методы могут быть реализованы для любого типа; структуры представляют данные, тогда как интерфейсы представляют абстракции; и т.д. Это дает легкость понимания происходящего при смешивании всех этих вещей.
Мой опыт говорит, что быдлокодер на любом языке может замутить совершенно непредставимый и непонятный код. Ортогональность не панацея, хотя с ней гораздо лучше.

Адресной арифметики нет, по соображениям безопасности.
Сборка мусора сильно упрощается. Эффективность циклов не страдает.
А нужды остальных закроют слайсы.

Идентификаторы (имена переменных, функций и пр.) могут быть в юникоде.
В смысле, можно писать программы по русски, китайски и как угодно.
Интересно, как мы будем читать китайские или индийские программы? Я иероглифы не разбираю.

В языке пока нет базовых типов. Можеть быть будут, а может и нет. Их наличие усложняет сложность системы типов слишком уж.
Вот так. Язык для облегчения труда программеров, и нате, нет базовых типов.
С исключениями та же история. Эти вопросы пока открыты (быть или не быть).

Интерфейсы и типы без иерархии приводят к потрясающему упрощению их совместного применения.
Похоже так и есть. Но к этому надо привыкать.

Перегрузки методов и операторов нет.
На мой вкус, так и даром не надо. Полностью согласен с аргументацией авторов.

Неявного преобразования чисел нет.
А обещали "чувствуется как динамический язык". Забавно.

Модель поддержки параллелизма выросла из Взаимодействующих Последовательных Процессов (CSP -Communicating Sequential Processes).
Блин, надо срочно найти букварь на эту тему.

goroutines - вместо тредов. Идея в мультиплексировании функций выполняющихся независимо. Есть набор тредов - работяг, на них оно и едет. Один блокируется, горутины переводятся на другой, едущий. Экономно, стек маленький, удобно.
Видимо, рантайм может иметь заточку под железо, тогда вместо тредов можно использовать процессы? И столько, скольно ядер в камнях?

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

Что в итоге:

Складывается впечатление, что это будет более безопасный Си, не такой развесистый как С++ и с намеком на динамичность, типа Питона, но сильно не Питон.
Ну типа да, Си, но лучше. Параллельные системные программы писать будет легче и их смогут писать менее квалифицированные программеры (чем сейчас). Что приведет к массе низкокачественных программ очень быстро глючащих на оченьмногоядерных камнях. Гы, это плохой прогноз.
Хороший прогноз - в языке будут решены потенциальные пробелы в безопасности (с помощью пакетов проверенных библиотек от Интел сотоварищи) и мы увидим много хороших программ и довольных программистов. Высокие профессионалы Си-шники будут недовольны.

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

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Klaipeda (15) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) Baltic (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) seaside (1) serialization (1) shore (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)