FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Creando mi propio lenguaje: Ideas
Me pico el bicho de crear un lenguaje de programacion. No he podido sacarme de la cabeza la idea a pesar de que:
1- Ya hay demasiados 2- Es una tarea titanica 3- Es casi imposible que resulte exitoso 4- No tengo el tiempo ni los recursos Pero en fin. No es secreto que me encanta python, asi que no es sopresa que esta basado en el. Pero estas son un conjunto de ideas que me *fastidian enormemente* cuando programo, y me gustaria que existiera el lenguaje que propongo. Filosofia (ideas en desorden) 100% de acuerdo con Zen de Python. Muerte al NULL. Me da rabia de la mala (en especial con Ojb-c) que un objeto puede ser NULL en cualquier momento y que cause un error de excepcion. Por ende, mi lenguaje no considera que el valor de inicializacion de todo es un NULL. Todo se inicializa y existe legalmente, y no se puede nulificar (a menos que se use un tipo nullable). El NULL es un caso excepcional, pero casi todos los lenguajes lo consideran el estado por defecto. NULL es como tener que manejar la memoria manualmente... Dentro del programa, solo existe UNA y SOLO una forma de formato de datos. No veo porque deba usarse "\" o "/" en un lenguaje para manejar el separador de carpetas, porque existe simultaneamente cadenas ASCII, utf(8, 16, 32) y demas a la vez. O que haya la posibilidad de tener varios formatos de fecha, basados en la configuracion regional. En mi opinion, el mundo exterior no debe alterar el comportamiento del interior del programa. El programa lee y transforma en los datos para ser compatible con el mundo exterior (ej: Para mostrarle al usuario, o al leer campos de tablas, configuracion del sistema) pero una vez esta dentro del sistema, no existe variacion en la estructura de datos. La unidad basica es la funcion, no el objeto. Esto combina con: No hay necesidad de usar herencia para la OO. 100% de acuerdo con GO. Los numeros se hace con tipos de datos DECIMAL, no integrales o flotantes. Es toda una patada que las operaciones de +,-.* funcionen bien pero las / salgan incorrectas. La matematica DECIMAL no tiene problemas de errores de precision. El uso de INT y FLOAT se debe relegar a los casos donde tiene sentido. Los string deben ser internamente por defecto UTF8. Los mensajes de error deben tener los datos!!! Me *mata" cuando hay un mensaje del tipo " El registro esta duplicado". Y no me dice: En que tabla de que BD, de que campo, y lo mas importante, que VALOR lanzo el problema! Deberia ser: "El registro en Clientes.Id = 1 esta duplicado" Todo esto se puede resumir en: por defecto, lo correcto/obvio no lo mas eficiente. Usar el principio de la menor sorpresa. Como se veria el lenguaje? Variables. Seria un lenguaje tipado, como PASCAL Código PHP:
Código PHP:
Código PHP:
Texto largo. Soporte a closure, asi que captura las vbles/funciones de su entorno. No hay comillas! Código PHP:
Código PHP:
Código PHP:
Por ejemplo:
La idea es que el tipo de datos hace la transformacion y el validado del dato en el mismo tipo. Esto es lo que tengo por ahora: Código PHP:
__________________
El malabarista. |
#2
|
||||
|
||||
No sabes..., sería TAN hermoso un lenguaje de programación "PASCAL alike" en castellano...
En la profesional nos tocó "diseñar" un compilador para una materia de programación, pero como en todos los casos, terminas recurriendo a C para "crear" tu lenguaje. Como dato curioso, nuestro lenguaje de programación usaba el náhuatl como modelo de sintaxis y en las palabras.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively... "Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum. Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco |
#3
|
||||
|
||||
¡No te desanimes porque alguien como yo no pueda decir esta boca es mía aquí y ahora!
|
#4
|
||||||
|
||||||
Hola! Antes que nada, mi intención no es desanimar Me parece muy interesante tu planteamiento, y con un lenguaje así, podrías resolver muchos problemas de una forma muy sencilla.
Pero... Cita:
Cita:
Cita:
Cita:
Cita:
Cita:
Sin embargo, lo vería más como un lenguaje para aprendizaje, con las opciones limitadas, todo fuertemente tipado y sin posibilidad de errores; más que para un lenguaje profesional, donde las necesidades de cada uno son muy diversas y no se pueden englobar en un lenguaje con las características que propones. Sin embargo, ya digo, como lenguaje para iniciación me parece muy bien. Un saludo, y espero no haberte desanimado LoPiTaL |
#5
|
|||||||
|
|||||||
Cita:
Diseñar un lenguaje es mas dificil que usarlo. Como todo programa, es un balance de cosas que pueden ser opuestas (por ejemplo rapido <> pequeño en memoria). Adicionalmente, si se va a hacer un lenguaje ligeramente parecido a otro, pues como que no tiene mucha gracia! Se que ciertas decisiones pueden afectar el desempeño (hipotetico, porque no lo he probado) de este lenguaje. Lo que interesa es saber si perder X se compensa con creces con ganar Y. Por ejemplo, al usar un recolector de basura se afecta el rendimiento a bajo nivel, pero se compensa con una mayor productividad y simplicidad en el codigo. Lo malo es que se pierda X y lo que se obtiene Y es tan miserable que no valio la pena. Cita:
Código PHP:
Código PHP:
Algunas lecturas que me han convencido: http://programmers.stackexchange.com...ly-a-bad-thing http://lambda-the-ultimate.org/node/2699 Cita:
Cita:
Es mi opinion que es mejor disponer de la opcion mas sana a costa de una potencial degradacion en desempeño para la mayoria de los casos, y elegir la opcion mas eficiente para cuando se necesite, que tener la opcion mas "problematica" por defecto todo el tiempo, y tener que estar chequeando las cosas. Eso es una lata impresionante. Por ejemplo, en python 3 movieron todo a UTF en las cadenas. Una de las razones, es que cuando se hace apps web TODO EL MALDITO TIEMPO surge el error Unicode decode error. Lo malo es que sale en algo tan simple como: Código PHP:
Yo cambio milisegundos en la ejecucion del programa contra horas de depuracion. Lo que indico con la representacion interna es que haya una forma estable y bien delineada de como se mueven los datos, y que se convierta de forma explicita una vez que se toca el mundo exterior. Cita:
Simplemente considero que no tiene presentacion que : Código PHP:
Cita:
-Indicar un valor: Edad=18 -Contadores -Calculos aritmeticos elementales: Total = SubTotal + (SubTotal * (Impuesto/100)) - Descuento Los problemas de desempeño se verian en ciclos cerrados, o en tareas especializadas, donde el programador debe estar mas consiente de lo que hacer. Cita:
Obviamente, si es mas importante la velocidad de la maquina, C o Assembler. Pero creo que casi todos los lenguajes estan diseñados para acelerar al desarrollador...
__________________
El malabarista. Última edición por mamcx fecha: 22-09-2012 a las 03:04:31. |
#6
|
||||
|
||||
Cita:
Como también existe un SO (bueno... en realidad sólo es un kernel) llamado Toro, hecho en Pascal, Free-Pascal para ser más preciso. Ambos proyectos nacidos en mi tierra, lástima que casi completamente parados Y luego algunos fanáticos anti-Pascal dicen que Pascal es sólo para enseñar Saludos, |
#7
|
|||
|
|||
Cita:
Si como dices, no obligas al programador a usar un tipo único, sino que sigues permitiendo la elección (lo cual no quedaba claro en tu primer mensaje), entonces retiro esta objeción. En cuanto a lo del NULL, no había visto nunca la discusión que indicas en los links, aunque después de revisarlos, veo que básicamente Haskell utiliza lo que dices de tipos nullables, que al fin y al cabo, para utilizarlos, tienes que hacer una comparación con NULL (paso de parámetro nullable con "Maybe t", entonces para poder usarlo tienes que usar "Just x", el cual comprueba si es NULL y te lanza excepción). La diferencia es si no pasas un "Maybe t", sino sólo "t", con el cual estás seguro que no es NULL... no sé, Haskell acaba de meterse en mi lista de TODOs Supongo que así sí que podría resultar un lenguaje profesional. Espero novedades sobre el lenguaje Un saludo, LoPiTaL PD: ¿tienes ya nombre para él? |
#8
|
||||
|
||||
Cita:
Una pena que proyectos así se pierdan.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#9
|
||||
|
||||
Tener soporte para proyectos latinos por latinos es bien dificil, no hay el mismo "espiritu" y la falta de recursos golpea bastante.
---- Aun no le tengo nombre. Estoy recaudando informacion para ver que tan dificil es sacar una version 0.1 y tengo muchas lagunas. Por ahora trato es de imaginarme la sintaxis y como seria trabajar con el. ---- Otra cosa que me gustaria es poder instrumentar el codigo de forma nativa, pero desacoplada. Por ejemplo, para facilitar depuracion y/o analisis de velocidad y desempeño. Asi como se puede hacer un evento OnClick para escuchar un click del usuario: Código PHP:
Junto a eso, imagino seria muy util poder capturar remotamente una sesion de depuracion. Y poder, por ejemplo, logear los datos de entrada/salida de las funciones y poder marcar cuando X valor pasa (para detectar un error). El chiste es que la instrumentacion sea dinamica: Código PHP:
__________________
El malabarista. |
#10
|
||||
|
||||
Que bueno lo de Toro, como experiencia académica es excelente, me saco el sombrero!
|
#11
|
||||
|
||||
Cita:
No recuerdo bien que TORO Kernel (ex TORO OS) sea parte de su proyecto final para el título. Si en cambio que fue de inspiración académica. Si en verdad Matías Vara está haciendo este proyecto por el título, ¡que alguien le haga recordar mi experiencia! ¡Que no se meta en chaleco de 11 balas! Saludos, |
#12
|
||||
|
||||
Cita:
|
#13
|
||||
|
||||
Cita:
¿ Y a que "falta de recursos" te refieres ? Supongo que al recurso "tiempo", es así ?.
__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma. |
#14
|
||||
|
||||
En parte, esta entrevista con el creador de ruby:
http://fredwu.me/post/36493181321/an...oto#page-about Cita:
Y lo segundo es de "espíritu". Es mi impresión, pero en latino América hay mucho "bla bla" sobre el open source, lo libre, y como eso no significa siempre gratis, pero aun se nota que somos mas usuarios (y aprovechadores) que contribuidores.
__________________
El malabarista. |
#15
|
||||
|
||||
Me puse a pensar que tan real era esa impresion, asi que corri una consulta con BigQuery contra github, y estos son los resultados usando:
que se pueden ver en https://docs.google.com/spreadsheet/...F9mcFIxcGZmSmc Aunque existe una marcada presencia de países/ciudades del "1er mundo" tal como se desprende de este mucho mas completo análisis me sorprendió ver a brasil, España & argentina entre las 100 ubicaciones* mas populares. Asi que parece que la cosa a mejorado mucho desde mis primeras experiencias hace unos años * GitHub no tiene datos precisos del todo, ya que las ubicaciones las pone la gente como quiera (ciudad, país, región) pero es el único repositorio que conozco al que se le puede consultar sus datos directamente...
__________________
El malabarista. |
#16
|
||||
|
||||
Cita:
Pero que pasa con lo del país paisa no los veo en ese resultado. Saludos. |
#17
|
||||
|
||||
Pues esta en la posicion 257 de la hoja de calculo...
__________________
El malabarista. |
#18
|
||||
|
||||
Ups, se me habia pasado, estaba buscando medellin en realidad...
|
#19
|
||||
|
||||
Dejémoslo en que haberse currado toda la carrera en 5 años, sin vacaciones, y en esforzarse el doble por cuenta propia en ir estudiando lo que va a ver en el siguiente semestre, las prácticas profesionales y el poco y mal dormir junto a 5 tazas de café pasaron factura. Adérece con problemas familiares y de salud que derivaron en un prolongado tiempo, necesario, obligatorio (y si... también hay que decirlo, merecido), de descanso, para hacer el típico análisis de la vida personal, sentimental, y hasta en lo psicológico.
Elíjase como proyecto de grado y objetivos el sacar el mayor provecho a las tan variadas cátedras que le iluminaron la cabeza, que te robaron sus horas de sueño porque estabas enganchando y fascinado por sus contenidos. Mezcle con temas relativamente nuevos, o poco tratados en este pedazo del planeta, que te impulsa a buscar material fuera y en otras lenguas, algo que tenga también de desafiante. Y Una sobre-confianza inicial que derivó a una infra-valoración de los riesgos y un análisis restrictivo-operativo pobre. Creo que con eso se entiende Saludos, |
#20
|
||||
|
||||
Me canse de solo leerlo! Coincido, hay que balancear todo en la vida.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Creando mi propia página web con servidor propio | jorgegetafe | Varios | 7 | 26-03-2008 05:50:42 |
Abrir archivo propio desde Windows....en programa propio | darkphantom | Varios | 12 | 22-02-2007 05:46:49 |
Estoy creando mi propio google... | El yo | Internet | 3 | 14-04-2006 04:59:07 |
ideas para desarrollo | clanmilano | Varios | 5 | 31-05-2005 15:19:47 |
Ideas | Mistico | OOP | 4 | 27-06-2003 02:22:11 |
|