FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#21
|
||||
|
||||
Cita:
Se hace en C por inercia, y acceso a ecosistema. Pero puedes arrancar con CUALQUIER lenguaje. El punto es que la implicacion de la imagen no es correcta (aunque se puede argumentar que historicamente fue la sequencia que nos toco. Pero perfectamente pudo haber sido diferente: Lisp pudo haber sido el "c" para hacer lenguajes). Ahora, para *interpretes* si es mas cierto. Se pueden hacer interpretes metacirculares, en su propio lenguaje, y en un lenguaje mas "arriba", pero para hacerlos eficientes, necesitas hacer un bytecode y tener un lenguaje con la maquinaria de operar eficiente en eso ( y para especificar la estructuras y manipulacion memoria). Si tiene GC, este interfiere con el tema, porque los GC estan ajustados a su lenguaje, asi que si te desvias mucho termina afecto negativamente. Ahora, esto es puramente por eficiencia. Se puede totalmente hacer un interprete de C en Java y con bytecode, no ser tan lento en su generalidad (solo sufrir en manipulacion intensiva). P.D: Llevo como 3 años ya leyendo del tema y prototipando lenguajes en varios entornos. P.D: Si hablamos de que *realmente* hace un lenguaje bueno para hacer lenguajes, tenemos que estas son sus familas/versiones: Todos los lenguajes con Homoiconicidad (https://es.wikipedia.org/wiki/Homoiconicidad): - Derivados Lisp, por su enorme facilidad de metaprogramacion - Forth y derivados, trivial de hacer bootstraping - ML y derivados: Uso de tipos algebraicos hacen para lenguajes tipados lo que lisp para no tipados: Trivial de operar en AST Y lenguajes con capacidad de operar en estructuras de "bajo" nivel. C, C+, Pascal, Delphi... pero se puede en C#, Java con extenciones y soportes como https://github.com/dotnet/roslyn que operan al nivel del AST y no del lenguaje de alto nivel como tal. Osea, lo que hace a un lenguaje bueno pa hacer lenguajes? Que permita manipular AST de forma eficiente y natural.
__________________
El malabarista. Última edición por mamcx fecha: 14-10-2018 a las 02:16:36. |
#22
|
||||
|
||||
Bien, pero a donde quiero llegar es a ¿qué lenguaje se usó para crear java? pues principalmente c++ además de pascal y objetive-c
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#23
|
||||
|
||||
Cita:
Cita:
Cita:
No es sorprendente, porque incluso la afirmación de que C es un "lenguaje de bajo nivel" usandola como suposición de que significa "permite programar mas cerca de la maquina" no es correcta: http://lambda-the-ultimate.org/node/5534 https://queue.acm.org/detail.cfm?id=3212479 Cita:
El punto? "Alto" y "bajo" es relativo. Estamos amarrados a C no por ser de "bajo" nivel, sino porque es el estandar de la industria. Se me olvido de mencionar la razon ppal por la que se usa C/C++ para estas tareas. Por el ABI! Ya que tantos componentes y OS estan hechos en C, para hacer llamadas a esas interfaces, en C, tienes que emitir y entender C! Y es un ASCO! C es un pesimo lenguaje para conectar apps! Pero como es lo que hay, es lo que hay. Asi que toca aguantaselo. Asi, que si usas un lenguaje que ya tiene la maquinaria para entender C, pues te ahorras un problema menos. ------ Es posible hacer codigo en otros lenguajes que permiten emitir mucho mas eficiente assembler, simplemente porque son mas "cerca al metal" de la arquitectura moderna de los computadores: http://www.lighterra.com/papers/modernmicroprocessors/ Y en este caso, C es una barrera para explotar esas nuevas capacidades.
__________________
El malabarista. |
#24
|
||||
|
||||
Yo llevo tiempo con un par de lenguajes de programación rondándome la cabeza. Todavía no los he puesto en práctica (y tardaré en hacerlo ), pero mi idea no es ir a C, principalmente porque no pretenden ser lenguajes de sistema sino para extensiones (scripting), aunque pretendo que la implementación final sea en C por razones explicadas por varios de vosotros más arriba. Sólo uno de los dos lenguajes podría ser "compilado" ya que el otro tiene un objetivo demasiado específico.
Mi idea es hacerlo "a la Wirth", una máquina virtual/intérprete sencilla, con inspiración RISC, sobre la que funcionen los programas y con la que poder comunicarse. Tengo una ya hecha (mi BAScript) con inspiración en FORTH y escrita en Pascal, pero no termina de gustarme para estos proyectos. En los foros y listas de correos de FreePascal es ya tradición que algún novato proponga (o imponga, que también ha pasado) cambios al lenguaje con ideas procedentes de lenguajes como ADA, Eifel, LISP, Python (de verdad que no entiendo por qué tanto fan de este lenguaje), PHP (en serio, ha pasado), Java (si se aceptara, ¿se consideraría endogamia?) y C++ (sobre todo de las últimas ISO, que son el horror digan lo que digan) entre otros (quería poner algún lenguaje "funcional", pero no recuerdo ninguno ahora; ¿LISP se puede considerar funcional?), amén de que ya han metido soporte para el lenguaje ese intermedio que se re-compila cuando va a ejecutarse que usa GCC. "¿Y a qué viene esto?" os estaréis preguntando. Bueno, en el proceso de crear mis lenguajes he estado investigando sobre lenguajes de programación, nuevos y viejos. La cosa es que no termina de gustarme la deriva que están siguiendo, siendo cada vez menos concretos: cada vez hay menos lenguajes con variables fuertemente tipadas, e incluso están siendo cada vez más comunes lenguajes en los que el programador sólo da una indicación de lo que quiere hacer y luego el "ejecutor" (por ponerle un nombre) decide cómo hacerlo (algo así como SQL, pero más bestia). Están aplicando técnicas de inteligencia artificial, como redes neuronales y sistemas de aprendizaje, que son realmente quienes traducen el programa escrito por el programador al código que realmente se ejecuta con la escusa de la optimización, y la verdad es que no es un tema que termine de gustarme (en el mejor de los casos estas IA terminarán cometiendo los mismos errores que los humanos, tiempo al tiempo). Luego están los lenguajes que usan gráficos en vez de palabras, que Scratch tiene un pase, pero luego están los que son cajas unidas con flechitas y esos ya son para mear y no echar gota (algún día os tengo que contar lo del becario que tenemos en el trabajo ahora...) En fin, que las cosas evolucionan, y no siempre estaremos de acuerdo. Lo curioso es que son los lenguajes al estilo clásico los que se terminan llevando la pana, por ahora... Y ahora me voy a poner tiquismiquis. Cita:
Cita:
Venga, ya me callo. Última edición por Ñuño Martínez fecha: 17-10-2018 a las 12:21:05. |
#25
|
||||
|
||||
Cita:
Y todo lenguaje puede ser compilado. Cita:
Lo del "ejecutor" se llama https://en.wikipedia.org/wiki/Type_inference. Todo esto lo mueven en especial academicos que tratan de averiguar esto o aquello. Con el Type inference, se especula no solo que se puede programar con un lenguaje fuertemente tipado, sino que se puede al estilo de uno dinamico. Y va mas alla, que se puede no solo tener tipos fuertes, sino efectos fuertes: https://coq.inria.fr/ Esta el la comunidad donde se mueven estos temas: http://lambda-the-ultimate.org P.D: Creo que seria bueno retomar esta discusión en otro hilo.
__________________
El malabarista. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como Preguntar antes de borrar un registro | kaeltas | Conexión con bases de datos | 6 | 23-04-2013 07:34:08 |
me bucas la ayuda online antes que en delphi | strendek | Windows | 1 | 12-07-2008 18:12:31 |
!hombres Como Los De Antes! | marcoszorrilla | La Taberna | 0 | 11-05-2008 23:32:04 |
Identificación de usuarios antes de ejcutar delphi | pat_velton | Varios | 7 | 26-05-2006 11:00:04 |
|