python vs ruby

16
Актуальные языки программирования: Python; Ruby Карпов М.А, 5241/1

description

 

Transcript of python vs ruby

Page 1: python vs ruby

Актуальные языки программирования:

Python; Ruby

Карпов М.А, 5241/1

Page 2: python vs ruby

Содержание

• Обзор• Как начать?• Где применяется?• Почему не Java?• Python vs Ruby• Django vs Ruby on Rails• Востребованность, вакансии• Заключение

Page 3: python vs ruby

PythonКласс языка: объектно-ориентированный, императивный, функциональный, аспектно-ориентированный. Появился в: 1990 г.

Тип исполнения: интерпретация байт-кода, компиляция в MSIL, компиляция в байт-код Java

Типизация данных: строгая, динамическая

"строка" + 'строка' """тоже строка""" u"Юникод-строка" True or False # булевы литералы 3.14 # число с плавающей запятой 012 + 0xA # числа в восьмеричной и шестнадцатеричной системах счисления 1 + 2j # целое число и мнимое число [1, 2, "a"] # список (1, 2, "a") # кортеж {'a': 1, 'b': 'B'} # словарь lambda x: x**2 # неименованная функция

Page 4: python vs ruby

Философия Python (1)

• Красивое лучше, чем уродливое.• Явное лучше, чем неявное.• Простое лучше, чем сложное.• Сложное лучше, чем запутанное.• Плоское лучше, чем вложенное.• Разреженное лучше, чем плотное.• Читабельность имеет значение.• Особые случаи не настолько особые, чтобы нарушать

правила.• Хотя практичность побеждает стремление к чистоте.• Ошибки никогда не должны замалчиваться.• Если не замалчиваются явно.

Page 5: python vs ruby

Философия Python (2)

• Встретив двусмысленность, отбрось искушение угадать.• Должен существовать один — и, желательно, только

один — очевидный способ сделать это.• Хотя он поначалу может быть и не очевиден, если вы не

голландец.• Сейчас лучше, чем никогда.• Хотя никогда зачастую лучше, чем прямо сейчас.• Если реализацию сложно объяснить — идея плоха.• Если реализацию легко объяснить — идея, возможно,

хороша.• Пространства имён, черт возьми, — отличная штука!

Будем делать их побольше!

Page 6: python vs ruby

RubyДинамический, рефлективный, интерпретируемый высокоуровневый язык программирования для быстрого и удобного объектно-ориентированного программирования.

Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, сборщиком мусора и многими другими возможностями. Появился в: 1993 г.

Тип исполнения: интерпретатор

Типизация данных: динамическая с явным приведением типов

Page 7: python vs ruby

Философия RubyОсновное назначение Ruby — создание простых и в то же время понятных программ, где важна не скорость работы программы, а малое время разработки, понятность и простота синтаксиса.

Язык следует принципу «наименьшей неожиданности».

Предоставления программисту возможностей достижения одного и того же результата несколькими различными способами.

«Просто, но не слишком просто», вторичность скорости работы программы, динамичность, простые строгие правила, выполнение которых не доходит до педантизма, потребность создавать полезные и красивые программы как причина программирования.

Page 8: python vs ruby

Пример на Ruby

# создаём массив a = [1, 'hi', 3.14, 1, 2, [4, 5] * 3] # => [1, "hi", 3.14, 1, 2, [4, 5, 4, 5, 4, 5]] # обращение по индексу a[2] # => 3.14 # «разворачиваем» все внутренние массивы, удаляем одинаковые элементы a.flatten.uniq # => [1, 'hi', 3.14, 2, 4, 5] # пытаемся найти индекс элемента со значением 4 a.index(4) # => nil # предыдущая попытка найти элемент неудачна - все предыдущие функции # возвращают копии, но Ruby почти для всех функций предоставляется # аналог с тем же названием, но заканчивающийся на «!», # который модифицирует контейнер a.flatten! # => [1, "hi", 3.14, 1, 2, 4, 5, 4, 5, 4, 5] a.index(4) # => 5

Page 9: python vs ruby

Ruby vs Python• Языки высокого уровня• В Ruby всё является объектами, в Python при необходимости

можно программировать без объектов• Для Python существует огромное число библиотек• Существует «переходник» Ruby/Python• в Python отсутствует возможность модифицировать встроенные

классы• Ruby2 быстрее• В Ruby отсутствует компиляции в байткод. (При этом есть

возможность компилировать Ruby в Java и .NET байткод)

• Подробнее: http://c2.com/cgi/wiki?PythonVsRuby

Page 10: python vs ruby

А что про Java?

http://www.slideshare.net/Belighted/ruby-vs-java

Page 11: python vs ruby

Ruby on Rail<h3>categories</h3><p class="taglist">    <%= render :partial => 'tag', :collection => @tags %></p>

Page 12: python vs ruby

Django

<h3>categories</h3><p class="taglist">{% for tag in tags %}    <a class="level_{{ tag.pop_level }}"        href="{{tag.get_absolute_url }}">{{ tag.name }}</a>{% endfor %}</p>

Page 13: python vs ruby

Django vs Rail• Гигантское количество действительно крутых плагинов для RoR.• Разработка "от ссылки" в Django.• Миграции в RoR против ручного обновления таблиц в Django. • Django за 3 года обновился с версии 0.9.x до 1.0.x. Рельсы же скоро

выйдут третьей версии;• Встроенная возможность тестирования для RoR. • Отдельная конфигурация БД для тестирования.• Коммьюнити у RoR больше;• Для RoR есть Aptana, на основе Eclipse. Для Python на эту тему есть

только PyDev плагин;• Админка в django весьма сомнительный плюс.

Page 14: python vs ruby

Сравнение Rail и DjangoMTV (model-template-view) instead of the traditional MVC (model-view-conroller)

Page 15: python vs ruby

Try Ruby! Try Python!

http://tryruby.org/Python 2.6.5 Windows installer

Page 16: python vs ruby

Спасибо за внимание!

Вопросы?