Nick Sieger, воспользовавшись пакетами ANTLRWorks (http://www.antlr.org/works/index.html) и GraphViz (http://www.graphviz.org/), создал
визуальную модель (http://blog.nicksieger.com/articles/2006/10/27/visualization...) грамматики языка Ruby, для сравнения проделав туже операцию для языков Java (http://flickr.com/photos/nicksieger/280662707/), JavaScript (http://flickr.com/photos/nicksieger/280662871/), Cи (http://flickr.com/photos/nicksieger/281055530/) и Python (http://flickr.com/photos/nicksieger/281055485/).URL: http://blog.nicksieger.com/articles/2006/10/27/visualization...
Новость: http://www.opennet.me/opennews/art.shtml?num=8641
Жалко для С++ не проделал. :)))
Нифига не видно.
Очень познавательные картинки, жаль только, что цифр рядом нет -- число узлов, число связей, диаметр графа было бы интересно узнать.Видно, что си -- самый простой в смысле грамматики язык, питон от него не сильно отстаёт. А вот у руби уже раза в два больше узлов, и зависимости переплетены нипадеццки. Жабаскрипт сравним по сложности с руби, но как-то более структурирован, ну а жаба давит своей монументальностью.
Теперь понятно, что меня всегда раздражало в руби ;)
> Теперь понятно, что меня всегда раздражало в руби ;)
Гм, а что, интересно? Поскольку из комментария о "структурированности" JS похоже, что Вы восприняли картинки как-то художественно (мне вот колбасы почти не связанных нод больше подсказывают насчёт этажерок из костылей, которые при написании надо держать в голове и выстраивать в нужном порядке -- и которых в руби действительно немного).Правда, сам ни разу не являюсь знатоком языков и тем более парсеров/трансляторов, просто от ruby первый раз за много лет возникло сильное положительное ощущение "это можно давать детям". Наверное, впервые после Modula-2, на которой когда-то изрядно написано, и в яркую противоположность C++ и Java, от попыток посмотреть на которые мою слабую крышу начинало попросту срывать.
В питоне раздражает слепливание семантики с синтаксисом, но как бы "не нравится -- не ешь", вот и забросил. ;)
Ассемблер был бы такой этажеркой где каждая полочка соединена со всеми остальными и сама с собой. (только чистый, без фишки сall @function)
Мда, поймать бы того гада который дал модулу тем детям которые повзрослев написали cvsup... И по рукам, по рукам.
>Мда, поймать бы того гада который дал модулу тем детям которые повзрослев
>написали cvsup... И по рукам, по рукам.
Не нравится -- не пользуйте? (да и вроде ж другие дети, повзрослев, переписали его)
А чем вам не нравится cvsup? Стабильное, выверенное годами приложение, реализующее весь нужный функционал и кучу разнообразных проверок на ошибки при очень небольшом размере в скомпиленном виде - и ему за годы не потребовалось что-то исправлять. А csup (попытка переписывания нс Си) чуть ша г в сторону, валится в корку (проверки на ошибки, ага), и реализует не весь функционал.
Хех... Вы похоже не правильно поняли семантический смысл сих картинок. Например, цепочка примитивов без ответвлений означает, что эта цепочка семантически избыточна и ее можно заменить одним словом. Большее число связей означает бОльшую гибкость языка, т.е. при за счет ограниченного числа ключевых слов можно передать большее число семантических конструкций.
Проведите аналогию с обычным языком. Если в классическом русском языке число значений слов меньше и соответственно сочетаемость с другими словами тоже ограничена. А обычный бытовой русский значительно гибче, число значений некоторых слов очутимо больше. Ну и сочетаемость... Весь юмор в русском языке на этом построен.Понятно что во всем должна быть "золотая середина". Можно представить и сравнить как выглядит подобная картина для perl'а и как бы выглядела она же для Forth или какого-нибудь Logo.
Как говорится почувствуйте разницу...
А вообще занятно... Хотелось бы по другим языкам глянуть и сравнить.
А что же перла--то и C++ нет?
Вычислительной мощности не хватило :)
>А что же перла--то и C++ нет?Ну мне кажется для С++ все должно быть довольно простенько. Там ключевых слов по сравнению с другими языками относительно немного, остальное все библиотеки.
А вот perl, это должно быть, что-то...
"Only perl can parse Perl" (c) Он BNF не описывается.
Эти картинки ничего полезного не дают - ну связи, ну овальчики... Привыкнуть можно к любому синтаксису, были бы библиотеки.