Вопрос по ruby – какие знания Ruby я должен иметь? [закрыто]

26

Я только что обнаружилкакие знания C # я должен иметь? вопрос и задавался вопросом примерно так же, но для Ruby. Я считаю Ruby своим любимым языком программирования, и помимо изучения основ, по крайней мере того, что я извлек из многочисленных проектов Ruby on Rails и нескольких сценариев Ruby, я пытался научиться читать блоги, такие какпрожорливый, О 'Рейли Руби, Ола Бини, а такжеПолировка Рубин, Я также читал в таких книгах, какРубиновый Путь.

Тем не менее, я не чувствовал себя полностью готовым, когда проходил собеседование о моих навыках Ruby. Однажды меня спросили, знаю ли я о замыканиях, и сначала я ответил, что не знаю, но потом я спросил, имел ли интервьюер в виду блоки кода, такие как лямбда и т. Д.do...endи он сделал. Как я потратил около 3 лет на программирование на Ruby и пытался выучить язык без изучения замыканий = блоков кода?

Итак, мой вопрос к вам - какие знания должен иметь программист на Ruby? Что бы вы ожидали от меня, как интервьюера на должность в Ruby? Просто перечислите некоторые темы, и я прочту о них. Перечисление специфичных для Ruby инструментов, таких как Ruby on Rails, Rake, Rack и т. Д., Также хорошо, если вы считаете, что это необходимо.

Ваш Ответ

6   ответов
3

вы ищете какую-то общую теорию. Недавно я не читал, но книга на тему «Принципы языков программирования» может оказаться полезной (ищите книгу, в которой обсуждаются как объектно-ориентированные, так и функциональные языки).

Также вы можете найти освещение, чтобы посмотреть, как работает Rails или Rake (в отличие от того, как его использовать). Это может помочь вам глубже понять, что может делать Ruby.

2

с которыми я столкнулся во время своих интервью.

http://anilpunjabi.tumblr.com/post/25948339235/ruby-and-rails-interview-questions-and-answers

Надеюсь, вы найдете их полезными!

9

DSLs - как их использовать и как их написать. Копаться во внутренностях граблей и капистрано может быть действительно полезным для этого.

Rack - ключевое преимущество использования Ruby (в частности, Python) для создания веб-приложений. Понять, почему это преимущество, как оно работает и как оно обычно используется.

Message passing vs. function calls - еще одно ключевое преимущество Ruby над чем-то вроде Java. Использованиеmethod_missing и как это делает ActiveRecord и DSL возможными.

+1 за последний балл. Собственно, все точки.
15

вероятно, заполнить пробелы в знаниях, которые у вас есть, потому что вы настоящий программист, а не академик, прочитавЯзык программирования Ruby создатель Ruby Юкихиро Мацумото. Он охватывает много неясных деталей, таких как капризы множественного назначения в разных видах лямбд, и является относительно новым, охватывая новую семантику в Ruby 1.9.

Один мой босс однажды сказал мне, что программист, которому он давно доверял, однажды обратился к нему и спросил: «Я забыл ... сколько бит в байте?» Мораль этой истории заключалась не в том, что этот парень был идиотом, а в том, что иногда можно было написать достаточно грамотного кода в течение длительного времени и упустить то, что другим кажется таким, каким оно должно быть. элементарно.

Хорошо сказано. Можно сосредоточиться на том, что нужно сделать, или на академических вопросах. Хорошая точка зрения!
60

Я уверен, что много скучаю. Помимо упомянутых здесь вещей, понимание программирования и объектно-ориентированного программирования, в частности, является обязательным, конечно.

Несколько важных языковых особенностей:

Realise that in Ruby, everything is an expression, and be able to apply that principle, even if you think it makes your code unreadable. Closures are mentioned; I would also expect Rubyists to know the differences between blocks and procs (and lambdas) and know how to convert between them. Closure mastery is important to being able to write beautiful Ruby, in my opinion. Operator overloading: know what happens when you define methods named [], []=, ==, +, <<, etc. on an object. Be proficient with most instance methods of Array, Enumerable and Hash (even if you don't know the exact definition by heart). Your Ruby code will be so much more verbose if you don't use methods like collect, inject, join, zip, etc. where appropriate. Thoroughly understand what Symbols are, and when you should use / avoid them. Understand what metaclasses are, know the difference between class variables and class instance variables. Know how object attributes work in Ruby, how you can define them with attr_accessor and friends, and how you can define them yourself. Be able to use modules, both as mix-ins and as namespacing tool. You should also understand how to mix-in instance methods and class methods (or be able to figure out how you could do it). Know the difference between raise/rescue and throw/catch, and be able to use both correctly. Understand how metaprogramming works, and at least have a basic idea of all the methods that allow you to do metaprogramming (mostly hidden in the classes Module and Object). Be able to use a Hash method argument as a substitute for named arguments (even if it's just because it's a common pattern). Know how concurrency does and doesn't work in Ruby. Continuations, even if they're rarely used.

Некоторые жизненно важные инструменты:

Know and understand Ruby gems and rake and RDoc. and YAML.

Некоторые базовые знания:

Basic knowledge of Rails would be useful. Even if it's only because the outside world sometimes doesn't seem to know the difference between Rails and Ruby. Know there are other web frameworks than Rails: Merb, Sinatra, Camping, ...

Ultimately, keep in mind that the above is "just knowledge", and not skills. It's probably easy to pick up most of this if you're not familiar with it.

Это отличный ответ.
Отличный, но длинный список, спасибо! Мне лучше перейти к этому.
Отличный ответ - вы охватили почти все, что я имел в виду.
7

собственные классы (или метаклассы или как вы хотите их называть), миксины (включающие и расширяющие и все глупые трюки, которые вы можете с ними делать), а метапрограммирование - это специфические для Ruby вещи, которые приходят на ум Стандартные ОО и методы функционального программирования также будут честной игрой.

Похожие вопросы