Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос объявления переменных в Ruby, Большие проекты и compile time проверки 
V
    Опции темы
Royan
Дата 13.1.2006, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



Цитата

Цитата

не требует объявления переменных;

Хоть убейте, я не считаю это преимуществом для мало-мальски больших проектов smile


А как тебе JScript для ASP? Сейчас он вытеснен C#, но на нем было написано такое количество всего... Я уже не говорю, собственно, про JavaScript хоть текстовых редакторов на нем и не напишешь (RichEdit, который можно использовать с помощью JS не в счет, т.к. сам RichEdit - это компонент) на этом языке в дремучие 98 и 99 года создавались шедевры достойные классиков золотого века русской поэзии. Могу привести примеры, кого следует в этом убедить.


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Void
Дата 13.1.2006, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Блин. Я же не сказал, что из-за этого на Ruby нельзя писать большие проекты. И естественно я знаю, что на Perl/Python/PHP/whatever, не требующих явного объявления переменные, написано море кода. Я сказал, что для крупных систем преимущество такого подхода по сравнению с явным объявлением перменных сомнительно.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Pete
Дата 14.1.2006, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 5.1.2006
Где: Москва

Репутация: 2
Всего: 12



Цитата(Void @ 13.1.2006, 16:48 Найти цитируемый пост)

Цитата
не требует объявления переменных;

Хоть убейте, я не считаю это преимуществом для мало-мальски больших проектов smile

Извини, если ты хочешь писать проги, скажем, для вычисления совершенных чисел, то ruby, действительно не оправдан. А вот если надо несколько раз вычислять апосториорную оценку (пришлось мне это делать, только получилось так, что сначала сдал курсач, а сегодня, наконец-то, прогу дописал!!!), то лучше ruby, пожалуй, не найти. Я же писал в первом сообщении, что ruby не для больших проектов, насыщенных и ориентированных прежде всего вычислениями, но работать на нем со сложными объектами, скажем, матрицами — одно удовольствие!
Добавлено @ 22:06
Да, еще отпишись, пожалуйста, что ты называешь большим проектом.


--------------------
Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу)
Не откладывай на завтра то, что можешь сделать сегодня. (Пословица)
А теперь выпишем точное значение числа пи... (Препод)
Жахни, Пендальф! © Гоблин
PM   Вверх
Void
Дата 14.1.2006, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



По поводу быстрого скриптинга - согласен, хотя у меня для таких целей работает Python. Но это скорее дело привычки.
Цитата(Pete @ 15.1.2006, 00:04 Найти цитируемый пост)
но работать на нем со сложными объектами, скажем, матрицами — одно удовольствие!

Матрицы - не очень-то сложные объекты. Ознакомься как-нибудь на досуге с декларативным языком с поддержкой pattern-matching'а, чтобы понять, что такое настоящее удобство работы со сложными структурами данных. Хотя по сравнению с C++/Java, Ruby несомненно рулит в выразительности кода.
Цитата(Pete @ 15.1.2006, 00:04 Найти цитируемый пост)
Да, еще отпишись, пожалуйста, что ты называешь большим проектом.

Систему > 100K LOC, к примеру.
Я потворюсь еще раз: я не говорю, что необязательное объявление переменных делает крупные проекты на таких языках невозможными - нет. Но оно затрудняет проектирование и тестирование. Мое (и не только мое) мнение: максимум ошибок должен отлавливаться во время компиляции, а не во время выполнения. Отсутствие декларации переменных существенно снижает количество compile-time проверок.

Это сообщение отредактировал(а) Void - 14.1.2006, 23:51


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Pete
Дата 15.1.2006, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 5.1.2006
Где: Москва

Репутация: 2
Всего: 12



Цитата(Void @ 14.1.2006, 22:28 Найти цитируемый пост)

pattern-matching

Ты имеешь в виду механизм сопоставления с образцом? Тогда я тебя не совсем понимаю:
1) при чем тут структура данных?
2) в ruby этот момент разработан весьма прилично (уступает, разве что, Perl).


--------------------
Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу)
Не откладывай на завтра то, что можешь сделать сегодня. (Пословица)
А теперь выпишем точное значение числа пи... (Препод)
Жахни, Пендальф! © Гоблин
PM   Вверх
Void
Дата 15.1.2006, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



pattern-matching не на уровне регулярных выражений, а на уровне любых значений и типов. Сюда же приплюсуем рекурсивные и алгебраические (вариантные) типы.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Pete
Дата 15.1.2006, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 5.1.2006
Где: Москва

Репутация: 2
Всего: 12



Цитата(Void @ 14.1.2006, 22:28 Найти цитируемый пост)

Систему > 100K LOC, к примеру.
Я потворюсь еще раз: я не говорю, что необязательное объявление переменных делает крупные проекты на таких языках невозможными - нет. Но оно затрудняет проектирование и тестирование.

Да, зато прога, которая решает произвольную систему линейных уравнений, пишется минут за 20 и занимает примерно столько же строк smile (с учетом приглашений для ввода). Удобно, когда нет под рукой маткада...
Добавлено @ 02:09
Цитата(Void @ 14.1.2006, 22:28 Найти цитируемый пост)

Ознакомься как-нибудь на досуге с декларативным языком с поддержкой pattern-matching'а

Например?


--------------------
Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу)
Не откладывай на завтра то, что можешь сделать сегодня. (Пословица)
А теперь выпишем точное значение числа пи... (Препод)
Жахни, Пендальф! © Гоблин
PM   Вверх
Void
Дата 15.1.2006, 02:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Цитата(Pete @ 15.1.2006, 04:08 Найти цитируемый пост)
Например?

Все ML-оиды (OCaml, SML), Haskell.

Интересно, что вернее:
где языковой флейм, там Void, или
где Void, там языковой флейм? smile



--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Pete
Дата 20.1.2006, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 5.1.2006
Где: Москва

Репутация: 2
Всего: 12



Я бы рад, да времени пока нет...


--------------------
Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу)
Не откладывай на завтра то, что можешь сделать сегодня. (Пословица)
А теперь выпишем точное значение числа пи... (Препод)
Жахни, Пендальф! © Гоблин
PM   Вверх
FunnyFalcon
Дата 27.3.2006, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 27.3.2006

Репутация: 3
Всего: 7



Цитата

Систему > 100K LOC, к примеру.

То что на языке с "обязательным объявлением переменных" у вас займет 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. Попробуйте - для своей задачи (веб) он в разы лучше ближайших конкурентов.
PM MAIL   Вверх
Void
Дата 27.3.2006, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Цитата(FunnyFalcon @ 27.3.2006, 22:04 Найти цитируемый пост)
То что на языке с "обязательным объявлением переменных" у вас займет 100К LOC, на Ruby вряд ли превысит 35K LOC, а скорее всего, даже <<20K LOC.
Что проще - отладить 100K с объявлением переменных или 20 - 35 K чистой логики, без всякого мало кому нужного мусора?

Хотите сказать, оверхед от объявления переменных составляет 200-300%? Некисло smile На такие заявления на моей памяти не решался ни один апологет динамических языков.

Есть немало языков, позволяющих достигать очень высокой выразительности и концентрации логики, обставляя в этом отношении действительно многословные Java и C#, и не теряя статической типобезопасности.

RoR пользуется успехом — значит Ruby нашел нишу. Веб-разработкой не занимаюсь, так что судить не могу.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
FunnyFalcon
Дата 27.3.2006, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 27.3.2006

Репутация: 3
Всего: 7



Sorry. Буду признателен, если вы посодействуете знакомству с такими языками. Не сомневаюсь - они есть, но все-таки хотелось бы поподробнее.



PM MAIL   Вверх
Void
Дата 27.3.2006, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



FunnyFalcon
Из классики: MLоиды, Haskell. Где-то рядом LISP и Erlang. Впрочем, последний все-таки динамически типизирован, хотя является наиболее коммерчески успешным из перечисленных.
Из сравнительно новых: Scala, Nemerle.

В общем, в динамической типизации нет ничего крамольного, и duck-typing вкупе с рефлексией порой позволяет делать очень вкусные вещи smile Но при прочих равных я предпочту язык, где максимум ошибок отлавливается на этапе компиляции, а не исключительно покрытием юнит-тестами.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
FunnyFalcon
Дата 27.3.2006, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 27.3.2006

Репутация: 3
Всего: 7



А чем из перечисленного вы (или ваши знакомые) пользовались? И в каких проектах?

Насчет ошибок на стадии компиляции: каких ошибок у вас больше - связанных с типизацией или с логикой?

Я не опытный программист. Но те ошибки типизации, что у меня были, больше были связаны с ограничением языка на статическую типизацию, чем с логическими ошибками (Правда это был С++). А логические ошибки и в статически типизированных языках вохможны и компилятором не отлавливаются.

Опять таки - я повторяю мысль многих людей - приверженцев Python/Ruby, так что я плагиатор и не лучший из таковых. Но объективные ответы на вопросы я бы хотел услышать.
PM MAIL   Вверх
Cr@$h
Дата 24.8.2006, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: нет
Всего: 41




M
Cr@$h
Тема выделена из разговора об особенностях Ruby.

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.