My whirlwind tour will cover C, C++, Lisp, Java, Perl, (all languages we use at Amazon), Ruby (which I just plain like), and Python, which is in there because — well, no sense getting ahead of ourselves, now...
You just have to know C. Why? Because for all practical purposes, every computer in the world you'll ever use is a Von Neumann machine, and C is a lightweight, expressive syntax for the Von Neumann machine's capabilities....
C++ is the dumbest language on earth, in the very real sense of being the least sentient....
...even if you don't program in it much, learning Lisp will be a profound experience that will make you a better engineer for the rest of your life...
...Java is simultaneously the best and the worst thing that has happened to computing in the past 10 years...
Religion isn't the opiate of the masses anymore, Karl. IDEs are.
Забавно, что Lisp-о-любы говорят одно и тоже на разных языках (в частности про C++), а не только на русском в RSDN
Мне еще вот какой фрагмент понравился:
Python
Well gosh, what about Python, a nice language that has patiently been waiting in the wings for all these years? The Python community has long been the refuge for folks who finally took the red pill and woke up from the Perl Matrix.
Well, they're just like the Smalltalk folks, who waited forever to replace C++, and then Java came along and screwed them royally, and permanently. Oops. Ruby's doing exactly that to Python, right now, today. Practically overnight.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Что мне еще понравилось, это проскальзывающие мысли о программировании вообще — о фанатизме, о необходимости трезво смотреть на вещи и вообще. У него в блоге еще несколько интересных вещей есть
eao197 wrote: > Well, they're just like the Smalltalk folks, who waited forever to > replace C++, and then Java came along and screwed them royally, and > permanently. Oops. Ruby's doing exactly that to Python, right now, > today. Practically overnight.
Ruby полностью заменит Python когда напишут Boost.Ruby
Кстати, а что там с embedding'ом Ruby в свой код? Как он совмещается с
С++? Python в этом отношении идеален: он использует счетчик ссылок и
детектор циклов, так что к С++ прикручивается совершенно естественно.
Здравствуйте, Cyberax, Вы писали:
C>Кстати, а что там с embedding'ом Ruby в свой код? Как он совмещается с C>С++? Python в этом отношении идеален: он использует счетчик ссылок и C>детектор циклов, так что к С++ прикручивается совершенно естественно.
Сам не прикручивал, но знаю, что можно как расширять Ruby за счет C++, так и встраивать интерпритатор Ruby в C++ (была даже какая-то большая статья на эту тему в Интернете). Даже в Programming Ruby этому отдельная глава посвящена (но только C).
Более того, когда я выбирал между Ruby и Python, то решил, что Ruby расширяется за счет C++ еще даже проще, чем Python. В Python, насколько помню, ссылки инкрементировать/декрементировать нужно вручную. А в Ruby для всего есть VALUE, функции работы с которым сами всеми этими подсчетами занимаются.
eao197 wrote: > Более того, когда я выбирал между Ruby и Python, то решил, что Ruby > расширяется за счет C++ еще даже проще, чем Python. В Python, насколько > помню, ссылки инкрементировать/декрементировать нужно вручную. А в Ruby > для всего есть VALUE, функции работы с которым сами всеми этими > подсчетами занимаются.
Ага, вижу.
Python'овский подход мне нравится больше — там для объектов можно
использовать обычные smart-pointer'ы и не нужно никакое сканирование
стека. А еще есть и Stackless Python.
Кстати, множественное наследование в Python'е тоже замечательно ложится
на С++.
eao197 wrote: > C>Ruby консервативно сканирует стек (часто неприемлимо по времени) и > C>регистры на предмет указателей из-за чего возникают баги типа такого: > C>http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/83778 > Какой-то вырожденный случай.
Если бы... Известный косяк консервативных коллекторов — реально может
сильно испортить жизнь.
> C>Кстати, множественное наследование в Python'е тоже замечательно ложится > C>на С++. > Вот как раз Python меня не интересует совершенно
Я знаю Вот столкнуть бы вместе Гвидо ван Россума и Матсумото, чтобы
лучше черты двух языков скрестить.
eao197 wrote: > C>Я знаю Вот столкнуть бы вместе Гвидо ван Россума и Матсумото, чтобы > C>лучше черты двух языков скрестить. > Нельзя дяденька, Smalltalk получится
И пусть получается Мне в Ruby жутко понравилась идея с метаклассами и
блоками кода, а в Python'е мне нравится очень качественная реализация.
Нашел бесподобную сентенцию в статье Why Python? By Eric Raymond (Linux Journal http://www.linuxjournal.com/article/3882)
По поводу использования пробелов и табуляции в синтаксисе:
Indeed, the term ``free format'', used back then to describe the newer style of token-oriented syntax in Pascal and C, has almost been forgotten; all languages have been designed that way for decades now. Or almost all, anyway. It's hard to blame anyone, on seeing this Python feature, for initially reacting as though they had unexpectedly stepped in a steaming pile of dinosaur dung. That's certainly how I felt.
( Мой перевод: Я почувствовал себя так, словно внезапно вступил в дымящуюся кучу диназаврева дерьма. )
Сommunity matters. Так как больше народа пишет на Питоне, чем на Руби — приходится выбирать Питон.
Здравствуйте, Cyberax, Вы писали:
C>eao197 wrote: >> Well, they're just like the Smalltalk folks, who waited forever to >> replace C++, and then Java came along and screwed them royally, and >> permanently. Oops. Ruby's doing exactly that to Python, right now, >> today. Practically overnight. C>Ruby полностью заменит Python когда напишут Boost.Ruby
Уже есть просьба об этом
C>Кстати, а что там с embedding'ом Ruby в свой код? Как он совмещается с C>С++? Python в этом отношении идеален: он использует счетчик ссылок и C>детектор циклов, так что к С++ прикручивается совершенно естественно.