Как программист Python, который попробовал Ruby (и ему он нравится), я думаю, что есть какая-то ироническая параллель с тем временем, когда Python начал становиться популярным.
Программисты, работающие на языках C и Java, «кричали» Python, заявляя, что это не настоящий язык, и что динамическая природа его типов была бы опасной, и позволяла людям создавать «плохой» код. По мере того, как Python становился все более популярным, становились очевидными преимущества его быстрого времени разработки, не говоря уже о менее подробном синтаксисе:
// Java
Person p = new Person();
# Python
p = Person()
мы начали замечать, что в более поздних версиях Java появятся еще несколько динамических функций. Автобоксирование и распаковка упрощают работу с примитивами, а обобщения позволяют нам кодировать один раз и применять его ко многим типам.
С некоторой забавой я увидел одну из ключевых гибких возможностей Ruby - Monkey Patching, которую толпа Python называла опасной. Начав преподавать Ruby студентам в этом году, я думаю, что возможность «исправить» реализацию существующего класса, даже того, который является частью системы, очень эффективна.
Конечно, вы можете сильно облажаться, и ваша программа может вылететь. Я тоже довольно легко могу выполнить segfault в C. А Java-приложения могут умереть пламенной смертью.
По правде говоря, я рассматриваю Monkey Patching как следующий шаг в динамическом и метапрограммировании. Забавно, поскольку он появился еще со времен Smalltalk.
person
Matthew Schinckel
schedule
04.04.2009