tutorial - ¿Qué conocimiento Ruby debería tener?
ruby wikipedia (6)
A la lista de @molf me gustaría añadir:
DSL : cómo usarlos y cómo escribirlos. Cavar en el interior de rastrillo y capistrano puede ser realmente útil para esto.
Rack : una ventaja clave del uso de Ruby (contra Python, particularmente) para hacer aplicaciones web. Comprenda por qué es una ventaja, cómo funciona y cómo se utiliza normalmente.
Paso de mensajes frente a llamadas de función , otra ventaja clave de Ruby sobre algo como Java. El uso de method_missing
y la forma en que hace posible ActiveRecord y DSL.
Acabo de descubrir el conocimiento de c # que debo tener? Pregunta y se pregunta sobre lo mismo, pero para Ruby. Considero que Ruby es mi lenguaje de programación favorito, y más allá de aprender lo básico, al menos lo que he aprendido de numerosos proyectos de Ruby on Rails y algunos scripts de Ruby, he tratado de aprender leyendo blogs como Gluttonous , O '' Reilly Ruby , Ola Bini , y Polishing Ruby . También he leído en libros como The Ruby Way .
Sin embargo, no me he sentido completamente preparado cuando me entrevistaron sobre mis habilidades de Ruby. Una vez me preguntaron si conocía los cierres y al principio respondí que no, pero luego pregunté si el entrevistador quería decir bloques de código, como lambda y do
... end
, y él lo hizo. ¿Cómo pasé cerca de 3 años de programar Ruby y tratar de aprender el idioma sin saber que los cierres = código de bloques?
Entonces, mi pregunta para usted es ¿qué conocimiento debe tener un programador de Ruby del lenguaje Ruby? ¿Qué esperaría usted, como entrevistador para una posición de Ruby, que yo sepa? Solo liste algunos temas, y haré la lectura sobre ellos. Listar herramientas específicas de Ruby como Ruby on Rails, Rake, Rack, etc. también es bueno, si crees que es necesario.
Escribí un blog detallado sobre preguntas de entrevistas de ruby y rails que he experimentado durante mis entrevistas.
http://anilpunjabi.tumblr.com/post/25948339235/ruby-and-rails-interview-questions-and-answers
Espero le hayan sido de ayuda !!!
Esto es una especie de la parte superior de mi cabeza; Estoy seguro que me falta mucho. Además de las cosas mencionadas aquí, la comprensión de la programación y la programación orientada a objetos en particular es una necesidad, por supuesto.
Algunas características importantes del lenguaje:
- Tenga en cuenta que en Ruby, todo es una expresión , y sea capaz de aplicar ese principio, incluso si cree que hace que su código sea ilegible.
- Se mencionan cierres ; También espero que los rubistas conozcan las diferencias entre bloques y procs (y lambdas) y sepan cómo convertir entre ellos. El dominio del cierre es importante para poder escribir la hermosa Ruby, en mi opinión.
- Sobrecarga del operador : sepa qué sucede cuando define métodos llamados
[]
,[]=
,==
,+
,<<
, etc. en un objeto. - Sea competente con la mayoría de los métodos de ejemplo de Array , Enumerable y Hash (incluso si no conoce la definición exacta de memoria). Su código de Ruby será mucho más detallado si no utiliza métodos como
collect
,inject
,join
,zip
, etc. cuando sea apropiado. - Comprenda a fondo qué son los Símbolos y cuándo debe usarlos / evitarlos.
- Comprenda qué son las metaclases , conozca la diferencia entre las variables de clase y las variables de instancia de clase .
- Conozca cómo funcionan los atributos de los objetos en Ruby, cómo puede definirlos con
attr_accessor
y sus amigos, y cómo puede definirlos usted mismo. - Ser capaz de usar módulos , tanto como mezclas y como herramienta de espacio de nombres . También debe comprender cómo combinar los métodos de instancia y los métodos de clase (o ser capaz de descubrir cómo podría hacerlo).
- Conozca la diferencia entre levantar / rescatar y lanzar / atrapar , y ser capaz de usar ambos correctamente.
- Comprenda cómo funciona la metaprogramación y, al menos, tenga una idea básica de todos los métodos que le permiten realizar la metaprogramación (la mayoría está oculta en las clases
Module
yObject
). - Ser capaz de usar un argumento del método
Hash
como un sustituto de los argumentos con nombre (incluso si es solo porque es un patrón común). - Sepa cómo la concurrencia funciona y no funciona en Ruby.
- Continuaciones , incluso si son raramente utilizadas.
Algunas herramientas vitales:
- Conocer y comprender las gemas rubí.
- y rastrillar
- y RDoc .
- y YAML .
Algunos conocimientos marco:
- El conocimiento básico de Rails sería útil. Incluso si es solo porque el mundo exterior a veces parece no saber la diferencia entre Rails y Ruby.
- Sepa que existen otros frameworks web distintos a Rails: Merb, Sinatra, Camping, ...
En última instancia, tenga en cuenta que lo anterior es "solo conocimiento", y no habilidades. Probablemente sea fácil recoger la mayor parte de esto si no está familiarizado con él.
Parece que estás buscando alguna teoría general. No he leído ninguno recientemente, pero un libro sobre el tema Principios de los lenguajes de programación podría ser útil (busque uno que analice tanto los lenguajes orientados a objetos como los lenguajes funcionales).
También puede encontrar iluminador para ver cómo funciona Rails o Rake (en lugar de cómo usarlo). Esto puede ayudarlo a comprender mejor lo que Ruby puede hacer.
Probablemente puedas llenar cualquier laguna en el conocimiento que tienes debido a que eres un programador real y no un académico al leer El lenguaje de programación Ruby del creador de Ruby, Yukihiro Matsumoto. Cubre una gran cantidad de detalles oscuros, como los caprichos de la asignación múltiple en diferentes tipos de lambdas, y es relativamente nuevo, cubriendo nueva semántica en Ruby 1.9.
Un jefe mío me dijo una vez que un programador a largo plazo que él conocía y en quien confiaba se volvió hacia él y le preguntó: "Olvido ... ¿cuántos bits hay en un byte?" La moraleja de la historia no era que este tipo fuera un idiota, era que a veces es posible escribir un buen código competente a largo plazo y perder de vista las cosas que a otros les parece que deberían ser elementales.
los cierres son clave (conoce su alcance), eigenclasses (o metaclases o como quieras llamarlos), mixins (incluyen y amplían y todos los trucos estúpidos que puedes hacer con ellos), y la metaprogramación son las cosas específicas de Ruby que vienen a la mente. OO estándar y técnicas de programación funcional también serían un juego justo.