Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Ruby как язык для обучения программированию


Автор: Pete 5.1.2006, 23:49
 Ruby — самый (на мой взгляд, да и не только мой) лучший язык для обучения программированию и написанию скриптов. Он абсолютно бесплатен, занимает настолько мало места, что его можно носить на дискете, несмотря на это обладает огромными возможностями (от создания полноценных оконных приложений до программ, манипулирующих объектами Microsoft Office, например, Excel). Программа на ruby понятна любому, кто хоть как-то знаком с ооп и директивными и декларативными языками. Главный, пожалуй, недостаток — скорость. Но скорость не всегда критична! Порой, затратив уйму времени на какую-нибудь прогу, она, запустившись, проработает доли секунды. Пусть программы на ruby работают дольше, но они ГОРАЗДО быстрее пишутся. Ruby — скриптовый язык.

Естественно, не понять этого без примеров. Вот и они:
Код

# печатает факториал числа
def fact(n)
  n < 2 ? 1 : n*fact(n-1)
end

puts fact(200)

=> 78865786736479050355236321393218506229513597768717326329474253324435944996340
33429203042840119846239041772121389196388302576427902426371050619266249528299311
13462857270763317237396988943922445621451664240254033291864131227428294853277524
24240757390324032125740557956866022603190417032406235170085879617892222278962370
3897374720000000000000000000000000000000000000000000000000

Где еще вы видели, чтобы такое число хранилось в одной целочисленной переменной?
Код

# печатает символы введенного текста в порядке увеличения ascii-кодов через пробелы
puts gets.chop.scan(/./).sort.map{ |x| x += ' ' }.join
 

Автор: Void 5.1.2006, 23:53
Цитата(Pete @ 6.1.2006, 01:49 Найти цитируемый пост)
лучший язык для обучения программированию

По моему скромному мнению, начинать обучение лучше со строго типизированных языков. Но это всего лишь мое мнение smile

Цитата(Pete @ 6.1.2006, 01:49 Найти цитируемый пост)
Где еще вы видели, чтобы такое число хранилось в одной целочисленной переменной?

В Python, LISP, Haskell... дальше перечислять лень. Ruby хороший язык, но длинная арифметика, вшитая в язык - это не самое большое его достоинство smile

Автор: Pete 6.1.2006, 00:00
На ранних этапах обучения как раз важно абстрагироваться от различных тонких моментов, как-то ограниченность множеств чисел (целых, действительных) на компьютере, способов хранения информации в компьютере и т.п.

Автор: cardinal 6.1.2006, 03:10
Цитата(Pete @ 5.1.2006, 21:49 Найти цитируемый пост)

Ruby — самый (на мой взгляд, да и не только мой) лучший язык для обучения программированию

ML тоже для таких целей неплох...
http://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5

Автор: Cr@$h 24.8.2006, 16:31

M
Cr@$h
Тема выделена из обсуждения особенностей Ruby.

Автор: V.A.KeRneL 3.12.2006, 23:51
Всем прювет! Желаю поучаствовать в интересной беседе... Такс, с чего бы начить?..

Цитата(Pete @  5.1.2006, 23:49 Найти цитируемый пост)

Код

# печатает символы введенного текста в порядке увеличения ascii-кодов через пробелы
puts gets.chop.scan(/./).sort.map{ |x| x += ' ' }.join



Так, ну, во-первых, это конечно же можно сократить, раз уж автор хочет показать лаконичность всеми нами любимого языка!

Код

puts gets.scan(/./).sort.join(' ')


Цитата(Void @  5.1.2006, 23:53 Найти цитируемый пост)

По моему скромному мнению, начинать обучение лучше со строго типизированных языков. Но это всего лишь мое мнение smile 


Чур и моё тоже! smile Я тоже так думаю. И даже думаю, что начинать надо конкретно с Паскаля. А в качестве дистрибутива брать стандартный «школьный» Turbo Pascal 7.0. Благо он легко доступен в сети.

Главная причина такого выбора, имхо, в том, что вдоволь намучившись с программированием в таких жёстких рамках, почти все другие языки, ну за исключением разве что Асма, покажутся манной небесной! smile

Хотя не менее (если не более smile) важна другая: Паскаль необходимо знать хотя бы для того, чтобы легко понимать коды программ, приведённые в отечественных учебниках по алгоритмам. Подавляющее большинство из них юзают именно его.

Насчёт Руби мне хотелось бы высказаться так, как сделал это насчёт другого не менее известного скриптового ЯП Сузи Роман Арвиевич, работник математического факультета Петрозаводского госудраственного университета, и автор книги "Python", изданной BHV (http://home.onego.ru/~rnd/python): «он может быть хорошим... последним языком.»
Читай бурный обмен мнениями, состоявшийся у одного из моих бывших преподавателей Евгения Александровича Роганова с Романом Сузи: http://www.ctc.msiu.ru/materials/rb-py.php

Цитата(cardinal @  6.1.2006, 03:10 Найти цитируемый пост)

Цитата(Pete @  5.1.2006,  21:49 Найти цитируемый пост)

Ruby — самый (на мой взгляд, да и не только мой) лучший язык для обучения программированию

ML тоже для таких целей неплох...
http://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5


Это уж совсем нет, по моему. Мне кажется, что Вы очень давно учились программировать smile и забыли, какой Вы были маленьким, раз говорите, что декларативный язык хорош в качестве первого! Мне представляются совершенно туманными перспективы обучения низкоуровневым ЯП после ML или Haskell. Мой постулат таков: в качестве 1-го языка программирования должен быть избран Pascal, в качестве 2-го -- Ruby или Python!.. Если интересно дальше, то меня вполне устраивает цепочка, избранная а нашем универе (МГИУ, Московский государственный индустриальный университет): 
Код

Ruby -> Java -> C и Assembler -> C++ -> ФП и ЛП (Haskell и Prolog)

Также там куда-то на 2-ом или 3-ем курсе впиндюривается работа с БД на PHP...
А самому на досуге можно (и нужно!) попробовать и другие язычки: *ML, Lisp и т.д.
Мне лично очень интересен Scheme... Но это уже другая история! smile

Автор: FunnyFalcon 5.12.2006, 12:28
Цитата(V_A_KeRneL @  3.12.2006,  23:51 Найти цитируемый пост)
Ruby -> Java -> C и Assembler -> C++ -> ФП и ЛП (Haskell и Prolog)


Искренне завидую.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)