2009-10-18 7 views
5

Necesito tener un proyecto en el hogar ahora que estoy trabajando en Python/Django en el trabajo. Me gustaría aprender algo nuevo, así que estaba pensando en echarle un vistazo a Java.asm/C/Python/Perl/Lisp/Scheme Programador en busca de algo nuevo para aprender

¿Cuál es el marco web más respetado para la implementación de aplicaciones web Java? La única razón por la que no estoy revisando Ruby on Rails es por lo similar que es el ORM y otras partes para Django.

Alternativamente, ¿alguien piensa que debería echar un vistazo a seaside/smalltalk? ¿Alguien puede explicar por qué debería?

Haskell es algo que consideraré si alguien puede presentar un buen argumento para ello. Sin embargo, necesitaría un marco de trabajo web y una biblioteca de acceso a bases de datos.

Consideraría factor/forth si no estuviera tan acostumbrado al paradigma de la pila a través de x86/asm. Estaría dispuesto a escuchar cualquier contra-argumento a esto también.

Consulte también: http://www.reddit.com/r/programming/comments/9v3uf/asm_c_python_perl_lisp_scheme_programmer_looking/

+0

Debería ser wiki comunitario. – Brian

+0

Debería vincularse usted mismo: consulte también http://www.reddit.com/r/programming/comments/9v3uf/asm_c_python_perl_lisp_scheme_programmer_looking/ – Brian

+0

@Brian Okie dokie. ¿Puedes vincularme a eso? – callen

Respuesta

4

Parece que te gusta la programación web, por lo que smalltalk/seaside es genial. OMI todos deberían aprender smalltalk incluso si nunca lo usan, y seaside es un framework web realmente diferente al que están acostumbrados.Django, por ejemplo, se trata de REST, mientras que la filosofía costera básicamente dice "al diablo con REST".

Y si nunca has codificado en un entorno basado en imágenes, hay algo que parece ... natural, incluso mágico. Gran parte de la funcionalidad IDE que se originó en smalltalk se ha implementado en IDE de idioma basado en archivos, pero siempre se siente como un injerto antinatural, donde esas mismas características se sienten como si simplemente pertenecieran allí en smalltalk.

Echa un vistazo a Pharo. Dale tiempo suficiente para acostumbrarte al hecho de que no hay barra de menú y ver si no te atrapa.

+0

En realidad, vengo de un fondo de programación de sistemas, la programación web es solo mi trabajo diario. Seguir con esta sugerencia porque será una experiencia extraña. – callen

14

Con ese rango de habilidades, ¿por qué no aprender algo más fuera de su zona de confort, como la carpintería o pintura, o cualquiera de los cientos de otras habilidades que tienen poco que ver con su campo.

En algún momento, todos los idiomas son iguales y obtendrá pocos beneficios al aprender otro.

Considerando que, con algo totalmente diferente, se convertirá en un individuo mucho más completo. Yo, por ejemplo, como la pintura y el golf, aunque no soy tan bueno con ninguno de ellos, cuando le pregunté a mi instructor de golf cuál era mi desventaja, me dijo que era una incapacidad para golpear la pelota :-)

Encuentro que yo disfruto de haciendo cosas que no estoy acostumbrado ya que es una experiencia realmente nueva. Aprender otra habilidad informática es algo fácil de hacer después de un tiempo y, por lo tanto, se reduce el placer de hacerlo.

No me malinterprete, me gusta estar al tanto de los desarrollos en el campo pero, en su mayor parte, las nuevas tecnologías no le dan nada a mi carrera ya que la mayor parte del trabajo lo hago en tecnologías estables. Usted puede estar en una situación diferente.

+1

Una vez pintado. Terminé yendo durante 90 horas seguidas produciendo una copia de un viejo Delaroche en un estilo ligeramente diferente. En otras palabras, terminó mal. Carpintería? Estoy en Nueva York. No esta pasando. Quiero mejorar en la programación, es lo único que tiene un impacto significativo en mi vida. Si encuentro un tema potencial no relacionado con la programación que pueda estudiar/practicar, lo consideraré seriamente debido a su consejo, pero no me voy a desviar de mi camino para buscar algo así. – callen

+2

"En algún momento, todos los idiomas son iguales". Estamos muy, muy lejos de ese punto. – itowlson

+1

Creo que lo que quiere decir es que hay muchas maneras de intentar azotar una computadora estúpida a tu antojo. –

0

¿Qué pasa con el marco de Java Spring?

http://www.springsource.org/

O tal NHibernate?

http://en.wikipedia.org/wiki/NHibernate

Al final del día, su hasta usted. Como solo enumeré dos de muchos. Cuando estoy programando un lenguaje estático profesionalmente ... Intento aprender un lenguaje dinámico o de scripting. Y viceversa.

Además, trato de aprender algo totalmente diferente o fuera de mi ámbito ... tal vez incluso el shell Powershell o Korn o ActionScript.

+0

Powershell o Korn shell no me desafiarían en la forma en que estoy buscando y no serían aplicables a una idea de negocio secundaria que tengo. – callen

+0

También @NHibernate, acabo de salir del mundo .NET, prefiero no volver. – callen

0

¿Cuál es el marco web más respetado para la implementación de aplicaciones web Java?

No hay un único marco web más respetado que otros.Struts2, Spring MVC, Stripes o Wicket (basado en eventos) son buenos candidatos (personalmente me gustan las Stripes). Pero necesitarás un poco más para la persistencia (Hibernate o JPA) y para el pegamento (Spring).

Grails (Groovy on Rails) es otra buena opción.

Alternativamente, ¿alguien piensa que debería echar un vistazo a seaside/smalltalk? ¿Alguien puede explicar por qué debería?

Bueno, supongo que el aprendizaje de Smalltalk no puede hacer daño, pero no veo una buena razón para elegir más de un lenguaje Smalltalk moderner como Java. En cuanto a las herramientas, no sé nada en este campo, excepto VisualAge for Smalltalk pero, personalmente, realmente me mantendría lejos de ello.

Haskell es algo que consideraré si alguien puede presentar un buen argumento para ello. [...]

Parece que no soy el hombre adecuado para eso.

Consideraría factor/forth si no estuviera tan acostumbrado al paradigma de pila a través de x86/asm. Estaría dispuesto a escuchar cualquier contra-argumento a esto también.

Igual que el anterior.

+0

Las aplicaciones web en Java generalmente comparten estado o son más como Django/rails? ¿Cuáles son las diferencias entre los distintos marcos web que enumeró? – callen

2

De su lista, diría que le corresponde un lenguaje completamente orientado a objetos.

Podrías echar un vistazo a Ruby, pero recomendaría JavaScript ya que ofrece muchas cosas interesantes que probablemente no esperarías, como soporte para cierres, funciones de orden superior y herencia prototípica, además es un poco divertido y divertido muy popular.

+0

La lista no estaba completa, he codificado en Ruby, pero no en los rieles. ¿Cómo no está completamente objetada Python mientras que Ruby sí? Utilizo cierres en Python regularmente. http://ivan.truemesh.com/archives/000392.html Usado Javascript antes también, simplemente no me importa. Estaba tratando de evitar tener que listar/nix todo lo que he tocado en el mundo guiando la conversación hacia algunas tecnologías diferentes. Elegiste ignorar esto y eso me entristece. :( – callen

+0

Supongo que si ya entiendes la programación imperativa, funcional y orientada a objetos, entonces no creo que vayas a encontrar en otro idioma alguna nueva forma de expresar el cálculo. ¿Por qué no comienzas a mirar algunos? de los duros problemas a los que nos enfrentamos, como la concurrencia en máquinas multinúcleas. Para ello, recomendaría echar un vistazo a Clojure en JVM y su marco web Compojure. Tratarás con Java pero no es exactamente popular (pero tampoco lo es Haskell o Smalltalk). –

6

Haskell es bastante popular en estos días como un ejercicio de reflexión mental, aunque puede que no te duela tanto si ya conoces a Lisp y Scheme. Es puramente funcional, por lo que no hay efectos secundarios para nada. Debe usar mónadas para imprimir texto y hacer otras cosas que requieren un cierto orden. También se evalúa de forma totalmente perezosa, por lo que puedes hacer listas infinitas en Haskell y no tener que preocuparte por el consumo de memoria.

El Haskell Platform puede no estar completo, pero pretende ser un conjunto portátil de librerías para Haskell. Es list of packages incluye algunos para manejo de CGI y (X) generación de HTML.

+0

Así que en otras palabras, no hay un marco web. Eso lo deja fuera de la lista, va a aplicar a esto una idea de negocio secundaria. – callen

+0

Nunca dije " no hay un marco web, "Acabo de proporcionar un paquete simple de herramientas web relativamente maduras. Consulte aquí (http://www.haskell.org/haskellwiki/RPC) si desea una lista de otras bibliotecas que pueden interesarle –

3

Sugiero Java. Cuando estaba buscando un trabajo, noté muchas oportunidades para los desarrolladores de Java, por lo que hay mucho por ahí, y es posible que algún día tengas la oportunidad de utilizar tus habilidades de Java.

Y entonces deberías probar Scala. Scala es una especie de lenguaje Python-ish que usa programación funcional para hacer programas muy escalables. A diferencia de Python, en Scala necesitas declarar tipos de cosas. Scala se ejecuta en la máquina virtual de Java para que pueda usarse en tiendas Java.

http://www.scala-lang.org/

Es posible que sólo te estoy dando esta respuesta porque estos son los próximos dos lenguas tengo la intención de aprender, a mí mismo.

Probablemente también deba pasar un poco de tiempo jugando con Javascript.Javascript tenía la intención de ser un "Lisp sigiloso" y me imagino que lo elegirías.

http://www.crockford.com/javascript/javascript.html

http://bc.tech.coop/blog/030920.html

Y diablos, pasar un buen rato con ella. ¡Escribe un juego o algo!

0

Hubiera sugerido dominar Lisp (en algún dialecto relevante) por lo que incluso si tiene Lisp y Scheme en su currículum, podría valer la pena REALMENTE aprender profundamente. Ver http://www.paulgraham.com/avg.html por las razones.

De lo contrario, Prolog podría interesarte. Está relacionado con SQL pero para programación en lugar de comunicarse con un conjunto organizado de tablas de datos.

Si desea orientar las tecnologías web, solo tengo experiencia con Java. Aquí, los nuevos Java Server Faces (JSF) permiten el uso de Ajax para actualizar páginas, y Google Web Toolkit permite páginas basadas en componentes muy ricas. Estos pueden ser lo suficientemente jugosos como para interesarte lo suficiente como para aprender suficiente Java para encontrarlos divertidos :)

+0

No "tengo Lisp en mi reanudar ", he pasado por el SICP dos veces y el libro de Lisp de Graham una vez. Lo entiendo muy bien. Aprendí mucho. Tiempo de seguir adelante. Realmente no me gusta cuando la gente es presuntuosa. – callen

+0

En ese caso, sugeriría el desarrollo de iPhone ... –

2

Necesitaría una biblioteca de acceso a la base de datos y al framework web para seguir con eso.

Si toda su programación se basa en frameworks web y bases de datos SQL, solo resolverá los mismos problemas con diferente sintaxis si cambia de idioma.

Cree algo utilizando un modelo de datos diferente: Prolog, Conceptual Graphs, RDF, Linda/JavaSpaces, XQuery, HDF5, ASN.1 o un modelo de red diferente: XMPP pub-sub, SNMP, una malla de configuración cero o un enjambre de Arduinos habilitados para ZigBee.

Tal vez un vistazo a idiomas como el Oz, Io o Erlang/OTP, que se distribuyen en lugar de sobre todo monolítico, como los que mencionas.

0

No veo C# y la plataforma .NET en su lista. Y estoy sorprendido de que nadie lo haya mencionado todavía.

He trabajado en C# durante 5 años. He visto un código Java pero nunca he codificado. Creo que Java es bastante similar a C# lo suficiente, por lo que si llegas a dominar uno creo que podrías elegir el otro en cuestión de días.

Una idea podría ser crear su propio lenguaje/compilador. El que me gustaría crear (o ver creado) sería un compilador de lenguaje ensamblador con una sintaxis orientada a objetos que sería muy similar a Python ... pero haga que sea un lenguaje tipado. Podría comenzar con los tipos básicos binarios en bruto db, dw, dd y luego agregarlos a estos ... Las funciones y métodos podrían tener el lenguaje ensamblador mezclado libremente en el código de alto nivel. Ahora, eso sería un proyecto divertido, creo?

+0

He sido desarrollador de .NET durante 3 años, recientemente lo abandoné por un trabajo de Python/Django. No gracias. Implementar mi propio lenguaje/compilador es una perspectiva mucho más interesante para mí. ¿Asm tipado y orientado a objetos? No sé cómo funcionaría eso. Si limpiaste la sintaxis, creo que sería algo así como factor. (Basado en pila, escrito dinámicamente) Visto aquí: http://factorcode.org/ Tan interesante como sería, prefiero escribir un superconjunto/limpieza del lenguaje de programación C ala ooc. Tal vez algo con inmutabilidad para concurrencia. Estaré reflexionando sobre ello. – callen

0

Sin duda prueba Haskell o Smalltalk o Forth.

Yo diría que Smalltalk sería de lo más útil mientras que Forth te alejaría del x86 asm y C bullshit. Hay más de una forma de codificar cosas cercanas al hardware.

0

¿Por qué no pruebas OCaml? Y si alguna vez sucede (tristemente) regresar al mundo .NET, tendrá conocimiento de F # en su equipaje.

Cuestiones relacionadas