«Parseltongue»: заставить Ruby немного поговорить на Python?

1

Просто для интереса действительно - вики сообщества - сколько Python мы можем понять Ruby? [Наверное, так же интересно сделать обратное].

Эксперимент (такой как он), возможно, видит, сколько можно записать в скриптах Ruby-Cross-Python, что приведет к идентичным выводам. Единственный "чит", который, я предполагаю, допускается здесь, - это слишком разрешить инструкции Ruby перед конечным "общим" script. [как определение "len" ниже].

Например, это работает в обоих:

a=[1,2,3]
mystring="hello"
bobby="hello"*3
epoch=1270123200
map={}
map['supamu']='egusu'
map['dedu']='paroto'

keys=map.keys()
values=map.values()

И сделаем это в Ruby:

class Object
    def len(object)
        object.size
    end
end

class Object
    def str(object)
        object.to_s
    end
end

Значит, теперь это работает в обоих:

a=[1,2,3]
mystring="hello"
len(a)
len(mystring)
str(123)

Я думаю, что проблема будет связана с условностями и циклами из-за разных требований синтаксиса. (например, ':' в конце строк Python...)

  • 2
    Итак, сделайте это вики-сообществом!
  • 0
    Doh! Спасибо - изменил это!
Показать ещё 5 комментариев
Теги:
multilingual

1 ответ

1

Чтобы полностью ответить на вопрос, вероятно, потребуется немного анализа. Структуры управления на обоих языках определены, чтобы сделать нашу жизнь проще, а коды более читабельны, когда мы программируем, но они могут быть реализованы с помощью методов, подобных тому, который был в небольшом объеме. Итерации и условные обозначения (кроме оператора "case" ), аналогично тому, как это описано в этом блоге: Эмуляция настроек Smalltalks в Ruby. Например, "if" будет выглядеть примерно так:

(an_object.nil?).
 if_true  { puts "true" }.
 if_false { puts "false" }

Я бы посоветовал справиться с итерацией и условностями, создав расширение объектов на обоих языках, которые определяют структуры управления как методы. Таким образом, можно было бы написать код с структурами управления, которые запускаются на обоих языках.

Но есть и другие вещи, которые лежат глубже в языковом дизайне, с которыми было бы сложнее справиться. В python каждая переменная экземпляра является общедоступной, в рубине они являются частными. Каковы различия в меняющемся я..?

Возможно, если бы мы начали уменьшать и опускать синтаксические вещи на вызовы методов, мы получим очень простой синтаксис... с чем-то похожим на smalltalk.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню