2009-03-28 14 views
5

¿Existen idiomas/tiempos de ejecución buenos, portátiles, de código abierto, de alto nivel, de tipo estático, imperativos, orientados a objetos, recolectados en la basura y seguros con un rendimiento razonable además de Mono y Java? Mono es agradable, pero es una tecnología de Microsoft, y tengo miedo de usarlo (no estoy seguro de cuán racional es este miedo). El problema con Java es que es demasiado simple (sin tipos de datos sin signo, sin estructuras, etc.).Lenguajes de programación administrados de código abierto

+0

"alto nivel" ... "no hay tipos de datos sin signo, no hay estructuras". Er ... –

+0

El argumento en contra de java parece bastante débil en este momento - tipos de datos sin firmar, estructuras? –

+0

Usar las estructuras tiene sentido. Sería atrevido usar objetos vectoriales en Java para declarar los vértices en una malla, considerando que cada objeto tiene un encabezado de unos pocos bytes de longitud. Structs permite un almacenamiento mucho más compacto. –

Respuesta

2

Me gustaría señalar Vala, que es un lenguaje basado en la sintaxis de C#, pero que apunta a Compilador de C (similar a Eiffel) y un tiempo de ejecución liviano y autohospedado. Sin embargo, no tiene colección de garbace.

+0

Por lo que puedo ver, es como VB6 - usa el recuento de referencias . En realidad, este rendimiento es peor que el GC en muchas aplicaciones. ¡Ah, bueno, deja que la gente aprenda de la manera difícil! :) –

+0

Gracias por mostrarme eso. Aunque no hay GC, parece la herramienta perfecta para el desarrollo de GTK. ¡No hay un código GObject C feo! – Zifre

+1

El conteo de referencias se compara mejor con Objective-C que con Visual Basic 6, que fue lento por otras razones. –

9

Mono no es una tecnología de Microsoft. .NET es, pero Mono no lo es - Mono es una implementación de código abierto de los estándares internacionales ECMA-334 y ECMA-335. Sí, se originaron de Microsoft, pero el propio Mono es no Tecnología de Microsoft.

No es que Mono sea un lenguaje, por supuesto, C# es el lenguaje. Pero entonces idiomas no son realmente de código abierto o no, las implementaciones sí lo son.

Parece que probablemente tiene un miedo irracional a C# - y también de Java. Ciertamente, hay cosas que me gustaría ver en Java (y significativamente prefiero C#), pero aún es perfectamente posible escribir aplicaciones muy significativas en él.

+1

El problema con Mono es que varias personas no confían en Microsoft (basado en el comportamiento pasado) para no hacer algo que atornille a Mono. – TofuBeer

+0

No debe esperar que mono sea una copia del .NET Framework, porque faltará mucho. Igual que no espere Wine emulará Windows por 100%. – Roalt

+0

De hecho. Y hay cosas en Mono que no están en .NET también. –

0

Siempre hay Python y Ruby

+0

Fallan según el criterio de "tipo estático". –

+0

También fallan en el "rendimiento razonable" para muchos problemas. –

+1

C# y Java también pueden fallar en "rendimiento razonable" para muchos problemas. Qué rendimiento es razonable depende completamente del contexto. Sin embargo, todavía fallas al escribir, entonces -1. –

2

Eiffel cumple con todos sus requisitos

2

En el CLR, hay Boo.

Boo es un objeto nuevo orientado tipos estáticos lenguaje de programación para el Common Language Infrastructure con una sintaxis de Python inspirado y un enfoque especial sobre el lenguaje y el compilador extensibilidad

El Boo Manifesto es una buen punto de partida

2

Bueno, no tener el tipo de datos sin signo en Java rara vez se considera un problema.

Pero qué pasa con Lisp - fue el lenguaje para introducir la recolección de basura, y probablemente el idioma más poderoso en absoluto.

Compruebe el rendimiento comparison por Peter Norvig (el director de investigación de Google). Puede que se sorprenda de que Lisp supere incluso C++ en algunas áreas y Java en total.

alt text

Sin embargo Lisp no parece ser un lenguaje corriente principal - Estoy wondering ¿Por qué? Porque es un tanto minimalista: probablemente no podría ser derrotado por ningún lenguaje actual o futuro.

(supongo que lo hace C# o Java tan popular es no sólo el idioma, sino las bibliotecas.)

+0

¿Porque se lee como una sopa que nadie quiere mantener? –

+0

El poder de Lisp proviene de la falta de sintaxis y estructura predefinidas, pero las mismas cosas que le dan su poder también son las cosas que hacen que sea difícil de leer y difícil de aprender. – Grumbel

2

C++ con una garbage collector? Aunque los problemas con Java no son un gran obstáculo (a menos que pueda detallar por qué necesita esas cosas, a primera vista esos argumentos generalmente no son muy sólidos, pero a veces lo son).

0

Antes que nada, Mono no es tecnología de Microsoft. En segundo lugar, solo hay dos máquinas virtuales (VM) serias con funciones mencionadas: .Net/Mono y Java. Pero, dejando de lado el requisito del lenguaje de tipo estático, puede llamar la atención al Parrot Virtual Machine (Wikipedia article about Parrot).

Y, por supuesto, Ruby, Python Erlang, etc., están también CrossPlatform VM (por lenguaje dinámico individual)

1

¿Cómo puede decir que Java es demasiado simple?

Bien, una de las razones para desarrollar Java es hacerlo menos complicado que C++ que tiene una página de más de 900 especificaciones. Sin embargo, es mucho más complicado que C.

Hace aproximadamente 10 años asistí a un curso por Les Hatton y él investigó para que su programa C fuera más seguro. Argumentó que casi nadie podía recordar las 140 páginas del estándar C, por lo que sería excepcionalmente difícil entender algo como C++.

Por supuesto, su objetivo puede no requerir seguridad, pero si lo hace es algo para recordar.

0

Puede consultar el lenguaje de programación D.

Pero para ser honesto? Sugeriría que se mantenga alejado de mono/C#. ¿Por qué? Muchas razones ...

Además, para fines prácticos, tome Java o C++.

Java es tan bueno como C# aunque es un poco diferente. C++ es igual de bueno porque el 99% de los problemas de GC se resuelven usando el recuento de referencias, así ...

+0

-1 por no mencionar ninguna de las razones para mantenerse alejado de mono/C# –

+0

Simplemente no quería entrar en debates sobre FOSS, bloqueo de proveedor y muchos otros. Probablemente, lo más importante es el hecho de que Mono estará siempre detrás de .Net, en el rendimiento de características y muchos otros. Por ejemplo: http://art-blog.no-ip.info/cppcms/blog/post/27 Así que, FOSS simplemente no debería entrar ahí – Artyom

0

Si desea aprender esto para poder estar más preparado para un trabajo, le sugiero que considere ya sea .NET (si desea ir a una plataforma de Microsoft) o Java (si desea ir a independencia de la plataforma), y hacer una gran cantidad de codificación. ¡Ambas son plataformas muy grandes!

Cualquier otra cosa sería que se utilizaran nichos de idiomas en solo unos pocos lugares, lo que puede ser muy agradable, pero es poco probable que te consiga un trabajo en cualquier lugar excepto en esos pocos lugares.

+0

No estoy realmente preocupado por conseguir un trabajo en este momento, solo estoy buscando un buen lenguaje para usar en mi tiempo libre. – Zifre

1

scala es menos detallado que java y se ejecuta donde java se ejecuta, ya que compila a bytecode java. Twitter reimplementó parte de su infraestructura central en Scala.

Cuestiones relacionadas