Scala ahora sobre .NET
Miguel García, que forma parte del grupo de Scala de la EPFL, se ha esforzado por hacer que la productividad de Scala quede a disposición de los desarrolladores. NET también. En un proyecto financiado por Microsoft, que ha alcanzado un hito importante en la entrega de esa capacidad. En esta entrevista Miguel le dice cómo ahora se puede utilizar Scala en .Net y da una idea de cómo se ha logrado este ambicioso proyecto y la dirección futura.
¿Por qué la gente necesita en Scala. Net?
Miguel:
Hay muchas razones por qué esto es atractivo tanto para los desarrolladores y empresas en general. Scala es un lenguaje de programación conciso y altamente productivo. Mediante el uso de Scala. NET, los desarrolladores pueden producir aplicaciones más rápidamente y tienen la posibilidad de desplegar a través de las dos plataformas importantes de la industria, la JVM y .Net.
Para el programador tiene mucho más sentido también, el aprendizaje de un idioma y crear aplicaciones para ambos entornos. Desde un punto de vista de la empresa de escasos recursos , los buenos desarrolladores, pueden moverse fácilmente entre las plataformas con una reducción de los costos de capacitación, aumentar la flexibilidad y la reducción de riesgos. .Net ofrece una plataforma de integración para varios idiomas y con esto una aplicación en Scala funciona muy bien. Usted puede utilizar las bibliotecas de red o aplicaciones sin necesidad de volver a escribir todo en Scala. Una manera de bajo riesgo para explorar el potencial de la Scala. En última instancia, significa que muchas herramientas y las aplicaciones creadas para la red. JVM y entornos se pueden trasladar de una a la otra. Una situación de ganar-ganar para todos.
Como desarrollador de Scala que apenas se dará cuenta de que se están ejecutando en. Net.
¿Puedo ejecutar programas en Scala. Net ahora?
Miguel:
La respuesta simple es sí, con algunas limitaciones que se retire por la caída.
Si usted tiene un programa de trabajo en la Scala JVM para la mayoría de los casos sólo es necesario recompilar con el compilador Scala.Net y se ejecuta allí.
La limitación clave por el momento es que los programas Scala no puede utilizar las bibliotecas. Net que se compilan con los genéricos de CLR, como las colecciones. Netos. Sin embargo, para este ejemplo en particular que es una limitación menor de la mejor biblioteca de fondos Scala sería la elección de los desarrolladores de todos modos naturales. Para que quede claro: sólo los genéricos CLR que no están implementadas en el compilador Scala.Net, todas las características Scala (incluidos los genéricos Scala) están disponibles para el programador. Los genéricos. Net contará con el apoyo en el otoño.
¿Cómo se desarrollan los programas?
Miguel:
Puedes desarrollar programas Scala directamente en MS Visual Studio. En otoño el plug-in de Visual Studio para la Scala apoyará la funcionalidad básica de la version, es decir, IDE, la realización y exploración del código, los saltos de línea, saltos de expresión y de informes de excepción y así sucesivamente. Sin embargo, el plug-in actual no es compatible, aún con la finalización de código o código de la navegación. Por ese motivo algunos desarrolladores prefieren escribir código en la máquina virtual Java usando Eclipse o IntelliJ y luego hacer la depuración final en Visual Studio. Usted puede encontrar un "How To" como guía aquí y un resumen del proyecto de presentación de diapositivas Scala.Net aquí .
La implementación actual ya es bastante robusta. El compilador Scala.Net se compila en sí, algunas líneas de 100k o menos, de la Scala de código.
¿Cómo hacer que esto funcione para todos?
Miguel:
La principal dificultad a superar es que los programas de Scala hacen un uso intensivo de la JDK de Java y esta funcionalidad no es naturalmente compatible con. Net y el compilador Scala debe generar el código adecuado para. Net
La comunidad Java ya ha creado IKVM que permite que los programas Java se convierta en MSIL y una biblioteca. NET que proporciona el soporte básico de JDK. Este ha sido un largo proyecto en ejecución de código abierto impulsado por Frijters Jeroen. Su motivación es convertir Java en un "una vez escrito, poder ejecutarlo en cualquier lugar". IKVM ha estado en existencia desde hace mucho tiempo y es un proyecto de código abierto muy fiable, con soporte comercial. La biblioteca IKVM ha sido el habilitador fundamental para el arranque del compilador. Net y ha demostrado ser una excelente base para los esfuerzos en el puerto de la biblioteca a la Scala.Net.
Scala.Net tiene una rica historia, no es visto por personas ajenas a la comunidad hacker del compilador. Ha habido varias personas como Nikolay Mihaylov y Rytz Lukas que se han hecho progresos en la creación de un compilador cruzado. Me recogió en el punto en el que había un compilador cruzado, pero fue incapaz de arrancar asi mismo en el medio ambiente de .Net. Esto significa que un archivo ejecutable de Scala.net que recompila sus propias fuentes. Este es el clásico problema de la gallina y el huevo pero en proporciones colosales.
El compilador cruzado era un excelente trabajo pero se encontró con el JDK solamente. Sus fuentes había una gran cantidad de dependencias de JDK API. Esto es muy típico de las aplicaciones de Scala. Programadores Scala todavía dependen de las características proporcionadas por el JDK, aunque muchas veces el equivalente se puede encontrar en el SDK de Scala. Tuvimos el compilador cruzado, pero se perdió una forma de reemplazar automáticamente las dependencias de JDK con llamadas a las bibliotecas en el entorno. Net.
El compilador se IKVM código byte JVM y lo convierte en. Conjunto de la red. Este cambio de código de nivel de byte, aunque un gran paso, no en sí misma nos lleve a la verdad, porque bootstrapping todavía nos quedamos con las dependencias JDK. La tarea por lo tanto, se convirtió en la creación de un pre-procesador que modificar el código fuente Scala directamente reemplazar dependencias JDK con IKVM. Equivalentes netos, un ejercicio de cartografía.
¿Cómo es exactamente lo que hace esta asignación?
Miguel:
El primer paso fue la creación de un conjunto inicial de transformaciones que se necesitan a nivel fuente. La etapa siguiente consistió en extender el compilador Scala de aplicar las transformaciones. No todos los compiladores son lo suficientemente flexibles o proporcionar este tipo de servicios, sin embargo. El compilador de Scala es muy modular y soporta plug-ins, así que era mucho más fácil adaptarse. Un nuevo plug-in Scala JDK2IKVM fue creado que se aplica la fuente de transformar en modo batch. El código fuente resultante pasa a través del resto de las fases del compilador estándar de producción de código de bytes MSIL con referencias de la biblioteca IKVM. Voila, tenemos Scala.Net, un compilador de Scala y puede se compile. Bootstrapping logrado. En realidad tuvimos que repetir todo el proceso de compilación / transformar varias veces para captar todos los casos es necesario transformar.
Detrás de las escenas que utilizan una tecnología de refactorización y la técnica que podría ser utilizado en otros escenarios de migración. Por ejemplo, la conversión de Java.IO a Scala.IO automáticamente. Usted puede aprender acerca de estas técnicas y todas las cosas que estamos haciendo para portar código Scala a otras plataformas en la esquina del compilador Scala . Si eres un hacker compilador entonces hay un montón de cosas fascinantes de ver.
Por supuesto, el compilador de Scala es sólo otra aplicación Scala por lo que es fácil comprender que este proceso se puede utilizar para cualquier aplicación Scala desarrollado para la JVM.
¿Qué hay de primitivo tipo de compatibilidad?
Miguel:
Los tipos primitivos que ofrece el. Net CLR virtuales de la máquina son un superconjunto de los tipos de JVM. También hay tipos de valor que son como los registros. Desde el punto de vista de escritor del compilador, es fácil pasar de uno a otro. Las cadenas funcionan bien con el procedimiento de transformación. Es poco probable que los casos de esquina se han perdido, ya que han sido bien probado. El IKVM ha tenido muchos años de uso en la comunidad IKVM.
¿Qué viene ahora?
Miguel:
Como se ha mencionado antes de que se amplía el plug-in de Visual Studio para dar a la experiencia del desarrollador IDE completo y añadiendo soporte de. Genéricos red. De hecho, la depuración ya es bastante útil, por ejemplo en vez de toda una línea en un momento de pisar una sub-expresión a la vez.
Sin embargo, hay algunas partes del SDK se requiere una modificación para ejecutarse en el medio ambiente. Netos. Un ejemplo es la colección paralela que será necesario que la programación interna y la administración de subprocesos se hace. Compatible con Net modelo de hilo. Hacer frente a este y otros ejemplos tendrá una recompensa agradable, los programas que se benefician de este tipo de aumento de rendimiento va a salir adelante. Netos también.
Transformar el mapa se ampliará para apoyar algunas bibliotecas básicas que son comúnmente utilizados por los desarrolladores, IO, por ejemplo.
¿Hay alguna recomendación para los usuarios / desarrolladores?
Miguel:
Sí, el cómo hacer para Scala.Net muestra una técnica para tener API. NET está disponible en los talones que las hace visibles para completar el código de JVM IDEs basados en Scala. Una vez que la aplicación ha sido desarrollada, entonces puede ser movido. Netos. Esto es sólo una solución provisional hasta la completa scala plug-in está disponible para Visual Studio.
Pero sobre todo empezar a usar Scala en. Net. Los comentarios más me hago, más me puede hacer que funcione para usted.
- 043h68's blog
- Inicie sesión o regístrese para enviar comentarios
Comentarios
@043h68 :) Sería bueno que
@043h68 :) Sería bueno que incluyas la referencia original de la entrevista para entender algunas cosas que el traductor automático no hizo bien.
Referencia.
Si, será de ayuda @OscarRyz
http://www.scala-lang.org/node/10299
Re: Referencia
Gracias, francamente no pude aguantar tanto leyendo bibliotecas xD.
Respecto al post, pues que bien, ya tenemos un lenguaje que podemos en más lados (se me ocurre Windows Phone, por ejemplo) y en mi caso es un volver a darle una oportunidad a .NET ya que aunque C# es un buen lenguaje no me agradó del todo.
@wishmaster77 Aunque es el
@wishmaster77 Aunque es el término correcto. Librería es un falso cognado de library. ;)
Re:@wishmaster77 Aunque es el
Será correcto pero inusual y para términos prácticos algo "purista". Prefiero leer library o libraries a bibliotecas o libarerías. Siempre (en cuanto a programación) prefiero el inglés sobre cualquier lenguaje.
No es inusual
No es librería, es biblioteca, y no es inusual en el mundo de habla hispana.
Re: No es inusual
No dije que no fuera lo correcto, pero dije que es inusual (en lo personal no suelo leer temas de programación que no esten en inglés) porqué pues se me hace raro que hablemos de temas de programación en español. Otra es la "semántica" que manejemos, más de uno nos confundimos por ejemplo al usar un programa cómo Netbeans cuando está en español (dónde todo se traduce de modo literal), yo la verdad batallo mucho al trabajar con Netbeans en español, lo prefiero en inglés.
Y también sé que librería en inglés es "Bookstore".
En fin, si nos vamos a lo correcto es "Expediente" o "Fichero", no archivo. Más no por ello en cada foro cuando decimos "tengo un archivo de texto" todo el mundo nos corrige y nos dice: "No, pues es que es ''fichero'' o ''expediente''.", ¿cómo traducimos "features"?, ¿cómo traducimos "encrypt"?, y tantas otras palabras que después de "traducirlas" si buscamos en el diccionario ni existen.
traducciones
features ==> Características
encrypt ==> cifrar
Yo alucino leer traducciones, prefiero los textos originales. El lenguaje del software es indudablemente el inglés. Software traducido, ni se diga, además que luego hasta problemas adicionales trae porque alguien por ahí rompió alguna funcionalidad porque una rutina espera encontrar una cadena en inglés y se la pasan en español entonces nunca se cumple una condición y nunca se realiza una acción, etc...
Pero no me parece inusual usar los términos correctos cuando hablamos en español. Yo me trato de corregir cuando me escucho o leo decir librerías en vez de bibliotecas, por ejemplo. Si bien prefiero leer la documentación en el idioma original, mi primer idioma no deja de ser el español y este sitio es para usuarios de habla hispana y las discusiones se llevan en este idioma.
De archivo/fichero pues es que también están las traducciones castellanas... podrías decir ordenador, en todo caso... en México (y latinoamérica) decimos archivo no como mala traducción de archive sino porque ese es el término que se usa en el mundo analógico (en paralelo con expediente). Esos muebles grandes de metal con cajones que tienen chapa se les dice archiveros, no? Porque guardan archivos...
Re: traducciones
Lo mismo, semántica.
Muchas veces yo he escuchado "déjame revisar en el archivo para buscar el expediente". Es igual, cómo por ejemplo en argentina dices: "Pedílo", en España en cambio: "Pedidlo", aquí: "Pídelo". No está mal, sólo que la semántica cambia, cómo para la gente puede ser "librería" para la jerga de un programador, fuera de esa jerga sabemos que "librería" es el lugar dónde venden libros.
No es que esté mal. No será correcto pero es la jerga, por ejemplo comprender el término "instancia" por el puro nombre cuando uno aprende POO es difícil, porqué en inglés "instance" tiene el significado algo diferente, sin embargo, "instancia" es la jerga...no por ello cambiamos el concepto "instancia", más lo adaptamos a la jerga de la programación orientada a objetos. Creo yo que lo mismo aplica para librería.
Es tarea de nosotros lograr que la computación se lea en español
Es tarea de nosotros los que trabajamos en computación, lograr que nuestra lengua sea usada de forma correcta en la ciencia y la técnica. Somos muchos los países que hablamos español y resulta difícil lograrlo. No sucede lo mismo con el inglés, a pesar de que también son muchos los países que lo hablan, y la razón es que el lenguaje de la computación lo imponen mayormente los americanos porque es en Estados Unidos donde casi todo lo relacionado con la computación florece.
Varios de los que participan en este foro tienen una ortografía pésima y a veces ni se entiende lo que preguntan. Cosas como esas debemos cuidar, no apabullando al que así escribe, pero tampoco permitiendo que sigan acabando con el idioma como lo hacen. Parte de la seriedad y calidad de un sitio como éste se basa en el uso correcto de nuestra lengua.
Por ejemplo, este mismo post en el que estamos aportando es un mal ejemplo. Si los que organizan este foro me preguntan si debe admitirse un post generado con google translator de un artículo en otra idioma, mi respuesta sería:NO.
Algunos dirán que soy muy exigente, pero velar por la calidad no hace mejores.
Ingles menos verboso
Aun recuerdo cuando daba mis primeros pasos en la programación (como a las 19 años) no sabia mucho inglés y yo me preguntaba por que desarrolladores mexicanos escribian todo en inglés inclusive la documentación, alguna vez hasta coloqué un comentario en la página cofradia.org, y todos se me fueron encima, algunos con buenos argumentos otros insultando, pero lo que aprendí de ello es que se utiliza el inglés en su mayoria por que es menos verboso (hablando a la hora de codificar) que el español, es mas comodo escribir getPlace que obtenerHabitacion y la documentación en inglés para tener mas alcance entre las comunidades, por que seguramente programadores de otros paises que no hablan ingles ni español de forma nativa es mas seguro que hablen inglés como segundo idioma que el español.
Pero bueno eso no quita el hecho de que nuestro idioma es el español y tenemos que aprovecharlo, hace 8 años la comunidad hispana era muy pequeña en comparación con lo que es ahora, no por que el inglés sea el idioma predominante vamos a hacer todo en él, debemos quitarnos algunos prejuicios y paranoias con respectos al ingles/español en lo relacionado a la programación. Y como con las películas es mucho mejor verlas con el audio original, así tambien los artículos y/o comentarios es mejor leerlos en su idioma original, las traducciones generalmente no reflejan el sentimiento que el autor puso por lo que traducirlo y mas con un traductor automático es casi como un insulto.
Por eso estoy muy de acuerdo con lo que comenta bferro.
Esto es algo parecido a la música en ingles/español (http://lacuerda.net/Extras/mision.php)
Sobres
Traducción incorrecta y buen uso de la lengua. :D
Como dice @ezamudio el lenguaje usado en el foro es español y por eso lo puse en español, desgraciadamente no me da tiempo de modificarlo y quitarle todo lo que el traductor hace mal como menciono @OscarRyz y por eso pase el link del articulo original.
¿Es un insulto al escritor?
No lo creo.
El propósito de este post fue de difusión del articulo y por lo regular la difusión es una de las principales cosas que buscamos al escribir post y publicarlos.
¿Entonces no debería de haber publicado el articulo si es que no tenía tiempo para editar y hacerlo entendible y al buen uso de la lengua hispana?
No sé.
Creo que la noticia era interesante para la comunidad y como imagino que no todos somos bilingües me pareció que ayudaría a más de uno a entender la entrevista mejor.
Y estoy de acuerdo: "Es tarea de nosotros los que trabajamos en computación, lograr que nuestra lengua sea usada de forma correcta en la ciencia y la técnica."
Anotado para la siguiente publicación.
Usar el español no significa prohibir el inglés
Espero que 043h68 no se haya enojado por lo que dije acerca de las traducciones automáticas. Soy de los que usa mucho la frase de "En español El Quijote" cuando alguien me pregunta si tal referencia está en español. Eso suena contradictorio con lo que digo de que debemos fomentar el español en este foro. Lo que quise expresar con mi comentario anterior es que todos debemos cuidar el idioma cuando escribimos algo aquí o en cualquier otro lugar.
La referencia que puso 043h68 es muy buena y contribuye mucho a la difusión de ideas, pero también se vale ponerla en inglés y así obligar a los que tienen dificultades con el inglés a esforzarse por mejorarlo. Ellos pueden usar esos traductores y como ejercicio mejorar el resultado de la traducción.
liga
creo que todo esto se hubiera evitado simplemente poniendo la liga a la entrevista original, al principio del post y luego poner la traduccion.
Re: Traducción incorrecta y buen uso de la lengua. :D
No quiero ofender. Pero considero que hubiese sido mejor que en ésta entrada pusieras los puntos que más llamaron tu atención, y al fin, poner el artículo original. Luego bien dices que no todos somos bilingües, es cierto, pero; por ejemplo yo no soy bilingüe o soy bilingüe a medias (ya que no hablo las dos lenguas). Sin embargo cómo todo profesional de tecnologías de la información, sistemas computacionales o "a fin", es un requisito saber inglés.
¿Porqué?, de entrada la documentación por más que la haga un español o un latino estará en inglés (ej. Siena). Por otra parte creo que si bien tenemos que hacer que el español sea un lenguaje de esta ciencia, también creo que puede ser conveniente adaptar términos (cómo lo hemos hecho con instancia).
Saludos!
Comentarios.
Gracias Dr. bferro y todos los que publican sus comentarios aquí, claro que no me molesto y muy por el contrario agradezco porque son buenos comentarios que tienen como objetivo ayudar para que los integrantes del foro, como las personas que lo visitan puedan nutrirse de estos comentarios y que mejor que si estas buenas costumbres las transmitimos más allá de los sitios en los que participamos.
Mientras que los comentarios sean con buena intención creo que siempre son bienvenidos, algunas personas tienen una muy mala manera de decir las cosas, pero si nos sirven hay que saber adoptarlas.
Esto no me dice: "Pff escribo y nada más vienen a criticarme", más bien pienso: "Pff tengo que poner más calidad en lo que estoy publicando".
Saludos!
Yo en lo particular prefiero
Yo en lo particular prefiero decir la palabra en inglés aunque se vea mal ( que no se ve mal, es solo un eufemismo que usé ) , como en le caso de "framework", porque si me pusiera a escribir "marco de trabajo" cada vez me sentiría mal yo mismo.
Biblioteca es un caso especial, porque se parece demasiado a la palabra librería, entonces, decir: "Puedes usar la library java.util" yiack... se ve mal, de plano.
Así hay muchos términos que se adaptan al español y hasta se crean verbos, como deployear ( de deploy ) que yo también prefiero, porque cada vez que leo traducido "desplegar" no entiendo de que hablan. Los beans ( /bins/ ) , los webservices ( /güevservis/ pero de nuevo, la regla es usar el término en inglés o traducirlo correctamente. Otro ejemplo es que la palabra accesar no existe, entonces o decimos "Access" o decimos "acceder".
Ahh... lejos quedaron aquellos días donde se podía simplemente escribir la palabra en español y no pasaba nada: Voleibol, Basquetbol, Fútbol, Jaibol, Mitin,
Re: Yo en lo particular prefiero
Exacto, es lo que yo digo, o sea por ejemplo cada vez que uno comente: "Ah, lo único que tienes que hacer es ponerle a tu bean otro método getter"...lo correcto sería: "Ah, lo único que tienes que hacer es ponerle a tu habichuela|frijol un método de obtención". De entrada se ve bien raro, y no por ello cuando alguien dice: "Ah, de acuerdo editaré mi bean", le decimos: "¡ES HABICHUELA O FRIJOL, NO BEAN!".
Cómo bien dice @OscarRyz, son palabras que se adaptan porqué lo más parecido (aunque no en significado) es la palabra. Librería, lo podemos usar en nuestra semántica de programador, de la misma manera que utilizamos bean, método (qué si vemos el significado de "método" es: "Del griego 'meta' que quiere decir 'más allá' y 'hodos' que quiere decir camino"), entre muchas otras palabras, que, su significado literal no tiene nada que ver con el que usamos por ejemplo los programadores.
@wishmaster77 Ahh... nope...
@wishmaster77 Ahh... nope... Es decir o lo usas en inglés o lo traduces bien al español. Lo que no se vale es que lo traduzcas mal al español.
Es decir, si quieres usarlo en inglés dirías:
SI
Te recomiendo que uses el library tal o cual que viene en el framework x
SI
Te recomiendo que uses la biblioteca tal o cual que viene en el marco de trabajo x
SI
Te recomiendo que uses la biblioteca tal o cual que viene en el framework x
SI
Te recomiendo que uses la library tal o cual que viene en el marco de trabajo x
NO
Te recomiendo que uses la librería tal o cual que viene en el módulo x ( traduciendo erroneamente framework como módulo )
Re: @wishmaster77 Ahh... nope...
¿Está bien hablar un idioma a medias?...O sea, en lugar de adaptar y de usar una jerga (cómo en cualquier otra profesión) nos ponemos mejor un tanto puristas...A mi de toda la vida me ha caído mal el que no se hable ni un lenguaje ni otro (ej. spanglish), odio cuando una persona no tiene la capacidad de expresarse en un lenguaje.
Tengo un primo que vive en EUA y te dice cosas cómo: "Hay que ponerle isolation al pipe system". Simplemente no, se ve mal y suena peor. Creo que volvemos a lo mismo, ¿porqué no utilizar una jerga, qué es común (y de nuevo, que la hay cómo en cualquier otra profesión)?
En fin, entonces digamos:
"I necesito to add some característica dentro de mi archivo dot java which yo optimizaré the método for the ease of uso de la habichuela" xD
Entonces, concluyo, ¿porqué no podemos utilizar una simple, común y entendible jerga?...De no ser así tendríamos que cambiar todas las veces que hemos dicho "beans" por "habichuela" o por "frijol".