Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Ruby: Общие вопросы > Вопрос объявления переменных в Ruby |
Автор: Royan 13.1.2006, 17:18 | ||||
А как тебе JScript для ASP? Сейчас он вытеснен C#, но на нем было написано такое количество всего... Я уже не говорю, собственно, про JavaScript хоть текстовых редакторов на нем и не напишешь (RichEdit, который можно использовать с помощью JS не в счет, т.к. сам RichEdit - это компонент) на этом языке в дремучие 98 и 99 года создавались шедевры достойные классиков золотого века русской поэзии. Могу привести примеры, кого следует в этом убедить. |
Автор: Void 13.1.2006, 17:35 |
Блин. Я же не сказал, что из-за этого на Ruby нельзя писать большие проекты. И естественно я знаю, что на Perl/Python/PHP/whatever, не требующих явного объявления переменные, написано море кода. Я сказал, что для крупных систем преимущество такого подхода по сравнению с явным объявлением перменных сомнительно. |
Автор: Void 14.1.2006, 22:28 | ||||
По поводу быстрого скриптинга - согласен, хотя у меня для таких целей работает Python. Но это скорее дело привычки.
Матрицы - не очень-то сложные объекты. Ознакомься как-нибудь на досуге с декларативным языком с поддержкой pattern-matching'а, чтобы понять, что такое настоящее удобство работы со сложными структурами данных. Хотя по сравнению с C++/Java, Ruby несомненно рулит в выразительности кода.
Систему > 100K LOC, к примеру. Я потворюсь еще раз: я не говорю, что необязательное объявление переменных делает крупные проекты на таких языках невозможными - нет. Но оно затрудняет проектирование и тестирование. Мое (и не только мое) мнение: максимум ошибок должен отлавливаться во время компиляции, а не во время выполнения. Отсутствие декларации переменных существенно снижает количество compile-time проверок. |
Автор: Pete 15.1.2006, 02:00 | ||
Ты имеешь в виду механизм сопоставления с образцом? Тогда я тебя не совсем понимаю: 1) при чем тут структура данных? 2) в ruby этот момент разработан весьма прилично (уступает, разве что, Perl). |
Автор: Void 15.1.2006, 02:04 |
pattern-matching не на уровне регулярных выражений, а на уровне любых значений и типов. Сюда же приплюсуем рекурсивные и алгебраические (вариантные) типы. |
Автор: Pete 15.1.2006, 02:08 | ||||
Да, зато прога, которая решает произвольную систему линейных уравнений, пишется минут за 20 и занимает примерно столько же строк ![]() Добавлено @ 02:09
Например? |
Автор: Void 15.1.2006, 02:25 | ||
Все ML-оиды (OCaml, SML), Haskell. Интересно, что вернее: где языковой флейм, там Void, или где Void, там языковой флейм? ![]() |
Автор: Pete 20.1.2006, 15:25 |
Я бы рад, да времени пока нет... |
Автор: FunnyFalcon 27.3.2006, 20:04 | ||
То что на языке с "обязательным объявлением переменных" у вас займет 100К LOC, на Ruby вряд ли превысит 35K LOC, а скорее всего, даже <<20K LOC. Что проще - отладить 100K с объявлением переменных или 20 - 35 K чистой логики, без всякого мало кому нужного мусора? В инете десятки/сотни статей людей, рассказвающих о переходе с Java/C++ на Python - разница в скорости разработки и __отладке__ - не проценты, а разы. И многие описывают именно __крупные__ проекты с LOC > 50K. Ruby - во многих случаях еще удобней (особенно для Web). Пример - RubyOnRails :-) Но все это за счет скорости конеченого продукта. Однако - если трафик вашего не более 1000 кликов в минуту - не все ли равно? Если у вас стоит сервак 2хXeon - думаете он не справиться и с гораздо большей нагрузкой? Когда-то был VisualBasic <5.0 - тоже был интерпретируемый, все плевались, но всем хватало - не странно-ли? Можете сказать: RubyOnRails - это единственное достойный/известный продукт на Ruby. Попробуйте - для своей задачи (веб) он в разы лучше ближайших конкурентов. |
Автор: Void 27.3.2006, 20:16 | ||
Хотите сказать, оверхед от объявления переменных составляет 200-300%? Некисло ![]() Есть немало языков, позволяющих достигать очень высокой выразительности и концентрации логики, обставляя в этом отношении действительно многословные Java и C#, и не теряя статической типобезопасности. RoR пользуется успехом — значит Ruby нашел нишу. Веб-разработкой не занимаюсь, так что судить не могу. |
Автор: FunnyFalcon 27.3.2006, 20:38 |
Sorry. Буду признателен, если вы посодействуете знакомству с такими языками. Не сомневаюсь - они есть, но все-таки хотелось бы поподробнее. |
Автор: Void 27.3.2006, 21:06 |
FunnyFalcon Из классики: MLоиды, Haskell. Где-то рядом LISP и Erlang. Впрочем, последний все-таки динамически типизирован, хотя является наиболее коммерчески успешным из перечисленных. Из сравнительно новых: Scala, Nemerle. В общем, в динамической типизации нет ничего крамольного, и duck-typing вкупе с рефлексией порой позволяет делать очень вкусные вещи ![]() |
Автор: FunnyFalcon 27.3.2006, 21:37 |
А чем из перечисленного вы (или ваши знакомые) пользовались? И в каких проектах? Насчет ошибок на стадии компиляции: каких ошибок у вас больше - связанных с типизацией или с логикой? Я не опытный программист. Но те ошибки типизации, что у меня были, больше были связаны с ограничением языка на статическую типизацию, чем с логическими ошибками (Правда это был С++). А логические ошибки и в статически типизированных языках вохможны и компилятором не отлавливаются. Опять таки - я повторяю мысль многих людей - приверженцев Python/Ruby, так что я плагиатор и не лучший из таковых. Но объективные ответы на вопросы я бы хотел услышать. |
Автор: Cr@$h 24.8.2006, 17:09 | ||
|