2012-06-18 13 views
5

Me preguntaba si hay alguna alternativa a Scala que intente ofrecer un sistema de tipo y sintaxis más potentes. Conozco alternativas funcionales como Haskell, pero ¿hay alguna que empuje el lado estático OO de las cosas, por ejemplo en esas áreas, donde falta Scala, como clases virtuales, herencia múltiple completa y sintaxis de constructor más flexible, estática verificación de contratos, dependencia de rutas más poderosa, MyTypes, modificador amigo, importaciones de primera clase, o tal vez alguna herramienta de tipeo esotérica, ni siquiera he pensado/oído hablar de ella.Alternativas de múltiples paradigmas orientados a OO potentes a Scala

OO y en menor medida Estática no parece estar de moda en estos días. Sin embargo, me sorprende que el poder de las computadoras modernas permita la creación de compiladores estáticos mucho más allá de los sueños de los escritores de compiladores en décadas anteriores.

Supongo que como no he encontrado nada, no hay alternativa de que probablemente quiera eliminar el código de producción en el corto plazo. Pero incluso si todavía son idiomas académicos, aún me gustaría vigilarlos y quizás jugar con ellos. Estoy buscando especialmente lo que podría llamarse alternativas de campo izquierdo a Scala. Entonces no Ceilán o Kotlin intentan priorizar la simplicidad sobre el poder. Eiffel no parece ir a ninguna parte en estos días. Me he encontrado con gBeta y Ceasar, pero no he podido averiguar si hay áreas donde pierden a Scala. existen algunas otras posibilidades?

+0

Creo que el sistema de tipos de Scala es insuperable, pero con el interés de probar alternativas, eche un vistazo a [Ioke] (http://ioke.org/). – opyate

+0

@opyate Ah es dinámico. –

+2

Vaya, leí "multi paradigma" y me entusiasmé con mostrarle Ioke :) – opyate

Respuesta

4

En una palabra, no. No hay alternativas de OO populares que se acerquen al sistema de tipos de Scala. Dadas sus características deseadas, le sugiero que eche un vistazo a C++, D y Go.

Si te sientes aventurero y no estás completamente apegado a la idea de OO, eche un vistazo a la raqueta Typed. Coq, Idris y Agda ofrecen golosinas de tipos dependientes que son bastante intrigantes. O simplemente recurrir a los lenguajes populares de FP como Haskell, F # y OCaml.

¿Hay alguna razón en particular por la que desee un idioma OO? De nuevo, Scala es probablemente tan bueno como lo es ahora si quieres un sistema de tipo genial y OO.

+0

Todo mi tiempo con C# Quería herencia múltiple y tipos de ruta dependientes, aunque no sabía el nombre. Habiendo purgado mi aplicación de self-types y comenzado a usar los clásicos diamantes MI parece bastante bueno. Lo que más me gustaría es poder crear clases que extiendan los tipos dependientes de rutas fuera de la ruta, en la forma en que extiendes una clase genérica sin cerrar el constructor de tipos y la compilación fácil en tiempo de ejecución. –

+0

Actualmente me estoy enfocando en Scala; provienen del Paradigma de Programación orientado a Objetos e intentan captar el paradigma de Programación Funcional. Agradezco su respuesta a mi pregunta en http://stackoverflow.com/questions/11162743/haskell-scala-interoperability. Estoy listo para dejar atrás el conocimiento de OO. ¿Puede Scala reemplazarse por completo con Haskell para ERP (Enterprise Resource Planning) como una aplicación distribuida de múltiples ubicaciones a gran escala? – Optimight

+0

@Optimight seguro. Es posible que desee consultar el [Industrial Haskell Group] (http://industry.haskell.org/), ver ejemplos de [Haskell en la industria] (http://www.haskell.org/haskellwiki/Haskell_in_industry), y habla con la gente en el [#haskell irc channel] (http://www.haskell.org/haskellwiki/IRC_channel) para más detalles. –

1

D (específicamente, D versión 2, también conocido como D2) es prácticamente el lenguaje que está buscando.

Hay videos en Youtube que introducen D, IDEs/plugins como Visual D (complemento para Visual C++), Mono-D (complemento para MonoDevelop) y DDT (complemento para Eclipse).

El sitio principal en dlang.org tiene una referencia completa biblioteca, la sintaxis del lenguaje, tutoriales, foros de discusiones para principiantes/avanzados, etc.

Para una interfaz gráfica de usuario, mira GtkD. Creo que necesitas usar el compilador DMD para esto, actualmente.

dsource.org y github tienen muchas otras bibliotecas/códigos de terceros, pero verán que la biblioteca central incluye todos los elementos básicos, como los analizadores json, los analizadores XML, etc., y el lenguaje central tiene muchas cosas necesita integradas, como hashmaps, matrices dinámicas, diseño por contrato, plantillas/expresiones evaluadas estáticamente, etc.

Con D2, puede vincular directamente a C y C++, y enlazar con el código Python/LUA, etc. Es capaz como un lenguaje de sistemas (PUEDES escribir un OS con él, si quieres), pero también funciona bien como un lenguaje de aplicación moderno, de alto nivel, elegante y rápido con soporte para cosas como código simultáneo y seguro.

En general, es muy impresionante.Triste que no es más popular, dado que Scala es un cerdo lento de memoria en comparación;)