|
|
|
Ruby = Perl + ООП
|
|||
|---|---|---|---|
|
#18+
Писал долгое время на Perl, сейчас решил поменять технологии, нужен хороший вебфреймвёрк, стал выбор Ruby и ROR или python и django. И т.к. с питоном я уже был знаком, решил посмотреть на руби как на язык программирования. Меньше чем за час пролистал книжку(Фитцджеральд М. - Изучаем Ruby - 2008) понял, что полностью ориентируюсь во всём материале, что там написан, даже не читая его. Ruby - это тот-же Perl только с ООП, кст в книге этой ООП затронут мало. С одной стороны это сходство радует, легко пересаживаться, с другой стороны всё то от чего я бежал с Perl'a частично присутствует в Ruby. Может изощрённые рубисты поправят меня? Кст, а есть ли в руби что-то типо use strict ? Мне необходимо явное объявление переменных и выдача ошибки, если происходит обращение к переменной не объявленной предварительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2013, 12:22 |
|
||
|
Ruby = Perl + ООП
|
|||
|---|---|---|---|
|
#18+
Gysgys, Ruby = Perl + Smalltalk + Eiffel + Lisp В Ruby много ООП от Smalltalk и Eiffel, но и очень много от функционального языка Lisp. На Perl не писал, но на сколько я знаю Perl позволяет включить строгий режим, почти как у языков со статической типизацией. В Ruby этого нет, здесь типизация только динамическая. Use strict нет, но в Ruby нельзя использовать не обьявленную или не инициализированную переменную, будет ошибка …. >a_var=b_var+1 NameError: undefined local variable or method `b_var' for main:Object по переменной a_var ошибки не будет, так как инициализировать переменные можно и вырожением. Хоть Ruby и вобрал в себя много от Perl, я думаю по возможностям он больше похож на Python чем на Perl. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2013, 13:55 |
|
||
|
Ruby = Perl + ООП
|
|||
|---|---|---|---|
|
#18+
рубистGysgys, Ruby = Perl + Smalltalk + Eiffel + Lisp В Ruby много ООП от Smalltalk и Eiffel, но и очень много от функционального языка Lisp. На Perl не писал, но на сколько я знаю Perl позволяет включить строгий режим, почти как у языков со статической типизацией. В Ruby этого нет, здесь типизация только динамическая. Use strict нет, но в Ruby нельзя использовать не обьявленную или не инициализированную переменную, будет ошибка …. >a_var=b_var+1 NameError: undefined local variable or method `b_var' for main:Object по переменной a_var ошибки не будет, так как инициализировать переменные можно и вырожением. Хоть Ruby и вобрал в себя много от Perl, я думаю по возможностям он больше похож на Python чем на Perl. Нет в Perl типизация тоже динамическая, можно наложить определённые ограничения,но они не касаются типов как таковых. Вот пример есть у нас некая переменная $gys и много кода связанного с ней а в кокомто месте вместо $gys = Gys->new(); Я написал $gus = Gys->new(); тоесть явно не то, что хотел сделать. Так вот в Perl'e указав use strict; все переменные должны быть объявлены явно с указанием модификатора области пременной, а по факту в 99% это my и при создании мы пишем my $gys; если в коде дальше я напишу $gus = ... то получу ошибку. Python точен, а в Ruby как и Perl я вижу множество подходов к написанию одних и тех-же действий, причём в Ruby появляется ещё целая куча методов встроенных классов которые дублируют друг-друга, сами название методов во многом совпадают c такими в Perle, использование допольнитех символов декораторов берущих на себя особые функции - тоже Perl подход, куча магических переменных типо всяких $' $/ $1 и т.д. , пост условия var_a = 5 unless var_b < 10, вызов функций\методов без скобок для передачи параметров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2013, 16:23 |
|
||
|
Ruby = Perl + ООП
|
|||
|---|---|---|---|
|
#18+
Gysgys......... Вот пример есть у нас некая переменная $gys и много кода связанного с ней а в кокомто месте вместо $gys = Gys->new(); Я написал $gus = Gys->new(); тоесть явно не то, что хотел сделать. Так вот в Perl'e указав use strict; все переменные должны быть объявлены явно с указанием модификатора области пременной, а по факту в 99% это my и при создании мы пишем my $gys; если в коде дальше я напишу $gus = ... то получу ошибку. Нет, в Ruby так нельзя сделать, нужно контролировать самому. Но при использовании внятного редактора (я использую Aptana Studio) такие опечатки сразу видны. GysgysPython точен, а в Ruby как и Perl я вижу множество подходов к написанию одних и тех-же действий, причём в Ruby появляется ещё целая куча методов встроенных классов которые дублируют друг-друга, сами название методов во многом совпадают c такими в Perle, использование допольнитех символов декораторов берущих на себя особые функции - тоже Perl подход, куча магических переменных типо всяких $' $/ $1 и т.д. , пост условия var_a = 5 unless var_b < 10, вызов функций\методов без скобок для передачи параметров Да, разработчики Ruby пропагандируют подход "одно и тоже можно сделать несколькими способами" в отличии от Python, где главный принцип "Должен существовать один — и, желательно, только один — очевидный способ". Нельзя точно сказать какой из этих подходов более правильный. Везде есть свои доводы, почему делается именно так. По этому выбирать нужно то, что самому ближе, интересней, удобней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2013, 17:05 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38300912&tid=1341771]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
144ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 419ms |

| 0 / 0 |
