FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#21
|
||||
|
||||
Cita:
Delphi (pascal) me gusta, aunque lo que más me fastidia es precisamente los comandos "tan" largos como begin end, con lo fácil que es {} |
#22
|
|||||
|
|||||
Cita:
C/C++/Javascript tienen serios problemas que han costado millones de dólares en tiempos de codificación, depuración, crash, errores de seguridad, confiabilidad y todo lo demás, debido a sus defectos de diseño. Claro, los problemas de delimitador son una fracción menor de sus problemas, pero es una muy buena correlación que si tiene {} imita/contiene (o innova nuevas!) malas practicas heredadas de C. Como puse en el link sobre C, y el que haya hasta libro sobre C++ (no me resisto a acotar este *divertido* sumario): Cita:
El problema es que sobre C/C++/JS recae gran parte de toda la infraestructura de software. Como dice el creador de C++: http://en.wikiquote.org/wiki/Bjarne_Stroustrup Cita:
1- La mejor implementación de un lenguaje OO? Smaltalk (no un C) 2- El MAS escalable? Erlang (no un C) 3- La mejor forma de escribir código de forma correcta? Haskell (quizas Eiffel? Ada?) (no un C) 4- El lenguaje mas flexible? Lisp (no un C) 5- La forma de escribir código para aplicaciones criticas? Ada. (no un C) De los derivados de C, quizás Scala, C#, GO, Rust sean notables en cuanto a su diseño, pero eso básicamente lo logran imitando a uno de los anteriores (o uno de sus familiares), no a C. De C que se gana? Que es lo mejor que hay luego del ensamblador. Pero en diseño? Creo que en parte es cultural. Simplemente, la gente de C/C++/Java/JS y similares no estan muy dispuestos a arreglar los defectos de los lenguajes. Es de notar C++: Cada nueva "version" es enruedar aun mas el lenguaje.. pero arreglar algo que tiene? Ni de locos. Cita:
El problema de muchos engendros que andan por ahí es que son delimitadores epilépticos. una veces sirven para lo que uno cree, excepto de formas bizarras cuando no. Un ejemplo de uno que *parece* que esta bien hecho es GO -ayuda que es el mas nuevo de la familia-. De notar? Fijense que tiene menos ruido que C/C++, y es un hecho conocido que todo programador que se respete en GO usa gofmt para formatear el código de forma consistente. Rust parece que también. Cita:
Ya que el chiste era parecerse a Java, se parece a Java. Pero cuando uno ve lo que han hecho con GO/Rust y otros que siguen la familia? Se nota que se *reduce* el uso de delimitadores. La *verdadera* pregunta es: Que hubiera hecho Anders si hubiera tenido TOTAL libertad? ---- Aquí una cosa para pensar: Porque, exactamente, es necesario tener delimitadores? Y de las verdaderas buenas razones que pudieran surgir: Porque, exactamente, debe aceptarse que hay que ponerlos, manualmente, siempre? Porque la razón original, era para ayudar al lexer/parser. Osea, es una ayuda a la maquina. Como ayuda a la persona? Como digo, es para pensar. ----
__________________
El malabarista. |
#23
|
||||
|
||||
Bueno, no estoy de acuerdo en casi nada de lo que dices, como casi siempre
Todos esos problemas que citas con los proyectos que enlazas, no son problemas del lenguaje sino de los programadores. Metes en el mismo saco a C, C++ y JS (¿javascript?), el que tengan una sintaxis parecida, al igual que php, no por ello son equiparables, C es C, punto. Y no tiene mucho que ver con C++ y muchísimo menos con javascript Un proyecto bien hecho no tiene motivo de generar montones de problemas o incidencias sólo por el hecho de estar en C. Me remito a mí mismo , que conste que no me considero una eminencia ni un maestro en nada, solo procuro tener cuidado y revisar mucho lo que hago, pero antes de usar delphi (desde 1998) usaba únicamente lenguaje C (desde 1987 aproximadamente) y en esa década fueron muchos los programas que hice, algunos pequeños y otros "grandes" proyectos. Casi todos siguen operativos hoy en día, decenas de años después, y nunca me llaman por problemas. Me parece ridículo culpar a C de los problemas, diciendo que tiene un problema de "base" |
#24
|
||||
|
||||
Antes de continuar, decir que hace mucho que no leo ni miro siquiera cosas acerca de Python, así que hablo bastante de memoria.
El problema que le veo a Python no es simplemente estético, sino funcional. Es difícil escribirlo y aún más difícil leerlo. El ejemplo de Casimiro es bueno. Un despiste en la sangría y te genera un error en tiempo de ejecución muy difícil de rastrear. Por otro lado el manejo de tipos de datos blando tampoco es santo de mi devoción. El modelo de objetos (que si no recuerdo mal, está a medio camino de los de JavaScript y PHP) tampoco me hace ni pizca de gracia. Finalmente, aborrezco los lenguajes con colector de basuras por buenas razones. Lo que sí recuerdo bien es la mala impresión que me dio desde el principio, y que por más cosas que leía acerca de él no desaparecía sino que aumentaba, hasta que decidí no volver a investigar nada más de él. Por cierto: Cita:
C me gusta, pero sólo C; no C++, ni C#, ni demás morralla (JavaScript, PHP, Objective C, Go, Beans ...), y sólo me gusta para ciertas ocasiones, en las que quiero o necesito una aproximación de muy bajo nivel. Última edición por Ñuño Martínez fecha: 15-05-2014 a las 14:52:44. |
#25
|
||||
|
||||
Cita:
Sinceramente da la impresión en algunos que simplemente muestran sus fobias a determinados lenguajes por una mera cuestión de cómo luce o por prejuicios personales. El lenguaje C ha sido y es la base de la gran mayoría de software importante, como dice nlsgarcia. Que académicamente haya lenguajes mejor diseñados, ni duda cabe, pero de ahí a poder decir que son mejores va mucho camino. Por otro lado, tienden a hacer comparativas que ni siquiera tienen sentido. Una frase que incluya C y JavaScript sólo tiene validez si se trata de una lista de lenguajes porque viven en mundos distintos y uno no puede hacer lo que el otro. Compararlos es fútil. Y por cierto, JavaScript es un lenguaje mucho más complejo de lo que parece. Incluso tiene esa herencia insertada que le gusta a Al González. Atacan PHP porque piensan en el PHP de hace quince años y no saben o prefieren ignorar que PHP ha sido totalmente rediiseñado. Creo que esto es lo más acertado que he leido aquí: Cita:
|
#26
|
||||
|
||||
Cita:
Código PHP:
Cita:
Un GC es prácticamente un requerimiento para hacer codigo eficiente & correcto hoy dia y a futuro. (Ahora bien, RUST & C son las unicas opciones viables sin un GC hoy dia).
__________________
El malabarista. |
#27
|
||||
|
||||
Cita:
Código:
if si edad<20 begin print "estudia para el futuro" print "estudia para el futuro" print "eres un jovencito" end hazotracosa A mí me parece una solución creada para los malos programadores que se olvidan de liberar memoria |
#28
|
||||
|
||||
Bueno Casimiro, pero ejemplos como ese también te puedes encontrar a montones en lenguajes con delimitadores de bloque, tan mal indentados, sin cambios adecuados de línea, que rastrear cualquier error se torna imposible.
Lo que estás criticando realmente no crresponde al lenguaje sino a la forma de usarlo, que es lo mismo que tú mismo has mencionado anteriormente. // Saludos |
#29
|
||||
|
||||
mamcx,
Cita:
Cita:
En lo personal no creo que exista un lenguaje perfecto, pero si creo que los lenguajes actuales son perfectibles y prueba de ello es la evolución que han tenido los lenguajes basado en C/C++ y el impacto positivo de estos en todo el ámbito mundial del software por su efectividad y eficiencia, no por ser perfectos ni mucho menos. Al final el que un software sea o no de calidad depende en última instancia del programador, el lenguajes escogido es solo una herramienta para un fin, su buen o mal uso depende estrictamente del programador Nelson. Última edición por nlsgarcia fecha: 15-05-2014 a las 19:07:02. |
#30
|
|||||||
|
|||||||
Cita:
Entiendo lo que dices. Hay lenguajes que para usarlos correctamente se necesita mayor disciplina de parte del programador. Pero los errores que muestra en http://www.andromeda.com/people/ddyer/topten.html son problemas del lenguaje. Por ejemplo: Código PHP:
Código PHP:
Cita:
Código PHP:
Cita:
http://www.slate.com/articles/techno...ly_simple.html Código PHP:
Código PHP:
Cita:
http://www.standardista.com/javascri...cript-gotchas/ Código PHP:
Y PHP? Siguiendo la tradición: http://code.tutsplus.com/articles/ar...akes--net-2894 Código PHP:
Cita:
Así que, no son comparables? Y noten: http://www.developerdrive.com/2011/1...coding-in-php/ Cita:
Osea: Uno de los errores MAS comunes es precisamente el uso de los delimitadores. "Es culpa del programador", ok, pero entonces porque hay que tener algo que causa problemas todo el tiempo? Es como tener un cuchillo, y que este afilado por el mango. Es culpa del usuario no ponerle un protector. La pregunta es: Y entonces porque se afila por el mango? Y con respecto a la sintaxis, varios son el mismo problema: La función que se supone hacen los delimitadores no siempre se cumple, y en cambio, cargan al programador de la tarea de estar pendiente de ellos. Lo ironico es que algunos de esos problemas son el mismo en varios lenguajes, que como dicen, que rayos tiene que ver Js con C? Pues que tienen el mismo problema! Y no debería! Por lo menos que tengan problemas diferentes! NO ESTOY EN CONTRA de los delimitadores. No me gustan los de C, pero eso es pura cosa estetica. Ahora bien, si son como los de VB o los de pascal y hay que usarlos a diestra y siniestra, tampoco me gusta mucho -pero al menos en pascal & VB hacen lo que deben-. Y ya que muchos casos no son necesarios, digo que estoy a favor de uso mas mesurado de lo mismo. En ese caso, el como lo hace GO me parece bien. Cita:
A lo que voy: C/C++/PHP/JS son del tipo de lenguajes que no garantizan que lo que uno escribe es lo que hacen. Es por eso que dan tanto lios, y cuesta tanto depurarlos y mantenerlos. ---- Y como contraste, ya que todo lenguaje tiene su carga de "Chanfle, esto no me lo esperaba!" aqui esa, pa que flipen: http://stackoverflow.com/questions/1...nguage-feature
__________________
El malabarista. Última edición por mamcx fecha: 15-05-2014 a las 19:10:53. |
#31
|
||||
|
||||
Cita:
https://en.wikipedia.org/wiki/Buffer...mming_language Cita:
Cita:
Una analogia: Hay un ERP que es el mas usado y es muy potente. Sin embargo, Si se le meten decimales hay que estar muy seguros de poner "." y no ",". Si se pone ",", la vaina se jode y corrompe todo. Si se mete un null entre una cadena en el proceso de importacion de datos, se rompe la seguridad del sistema. Se puede hacer injeccion de SQL. Entonces: No tiene problemas de base? Es lo mismo, para un lenguaje, un programador es un usuario. Si este tiene que estar pendiente de detalles bizarros, es lo mismo cuando un programa exige que para poder buscar, primero hay que reindexar, poner el chulito y luego buscar y no hacerlo antes de 2 secs despues del chulito. Culpa del usuario si la BD se corrompe... porque no esta mas pendiente? P.D: Y ese es un ejemplo muy cercano a la realidad... --- P.D 2: A veces me pregunto si los sistemas nos causan Sindrome de Estocolmo. Como lo tratan a uno, y uno los defiende!
__________________
El malabarista. Última edición por mamcx fecha: 15-05-2014 a las 19:44:58. |
#32
|
||||
|
||||
Cita:
Cita:
En que llevan funcionando decenas de años, todos los días, y cuando me encuentro a alguno de esos clientes me pregunta cómo me va la vida, si hago bicicleta, si me compré otra moto, etc. pero no me dicen que tengan problemas con los programas que les hice. |
#33
|
||||
|
||||
Cita:
¿Que tiene que estar pendiente de muchas cosas?, pues sí, es un problema, pero también podía haber decidido ser peluquero y se quitaba esos problemas |
#34
|
||||
|
||||
Cita:
Cita:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 15-05-2014 a las 20:54:39. |
#35
|
||||
|
||||
Cita:
http://web.mit.edu/~simsong/www/ugh.pdf Cita:
__________________
El malabarista. |
#36
|
||||
|
||||
No sé qué le estaban preguntando para contestar eso. Evidentemente no tiene sentido ni tiene nada que ver con lo que estamos hablando.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código Únete al grupo Teaming clubdelphi | Colabora mediante Paypal Última edición por Casimiro Notevi fecha: 15-05-2014 a las 23:25:46. |
#37
|
|||||
|
|||||
mamcx,
Cita:
Cita:
1- ¿C# tiene problemas de Buffer Overflow? , creo que no si simplemente se usa código gestionado. 2- ¿Java y D tiene problemas de Buffer Overflow? , creo que los lenguajes modernos derivados de C/C++ se han construido sobre las lecciones aprendidas de sus antecesores, luego hablar que todos ellos tienen problemas de base por compartir un ancestro común creo que no es una apreciación muy justa con dichos lenguajes. Cita:
Cita:
Cita:
Un programador debe conocer las fortalezas y debilidades del lenguaje que usa para hacer un mejor uso de el y construir software de calidad. Si aceptamos la tesis de que todo lenguaje derivado de C/C++ tiene problemas de base entonces deberemos aceptar que la computación poco ha avanzado desde la aparición de C/C++ y es un hecho que ha sido todo lo contrario, los sistemas son cada vez más complejos, potentes y seguros no necesariamente perfectos, sin embargo el factor humano siempre esta presente en ellos y la complejidad creciente de los sistemas hace cada vez mas necesaria una mayor disciplina en el desarrollo de software de calidad. Pregunto: ¿Si uniéramos las mejores características de todos los lenguajes actuales y se hiciera un lenguaje perfecto en todo sentido se eliminarían por completo las fallas de software, es decir: Los sistemas serían a prueba de fallas, eficientes, seguros y cumplirían a cabalidad las metas para los que fueron concebidos? Nelson. Última edición por nlsgarcia fecha: 15-05-2014 a las 23:01:10. |
#38
|
||||
|
||||
A proposito: La cita es del "Unix haters handbook". Una recolección de expertos en unix acerca de todos los lios de diseño de este. Esa cita es famosa por expresar la mentalidad común de la gente de *nix de despreciar al usuario por cometer errores, aun cuando defenderse de los tales requiere una serie de bizarros conocimientos del porque las cosas son como son. Es una de las lecturas recomendadas para todo programador.
__________________
El malabarista. Última edición por mamcx fecha: 16-05-2014 a las 05:23:04. |
#39
|
||||
|
||||
Eso aplica también a los lenguajes? Dirías, con los datos expuestos, que es el caso?
Cita:
Luego se mezclo que es culpa de nosotros no saber que esos delimitadores traen errores, entonces hay puse ejemplos donde es culpa de los compiladores/sintax los errores. Pero eso fue mezclar 2 cosas diferentes, aunque conectadas... En donde si quise dar a entender que están todos los de la familia C, es en que los marcadores (de bloque) que usan no aportan mucho al programador, que tener que usarlos es algo que se expone como un problema común en varias guías sobre los mismos (que se olvidan, que hay que estar seguro de cerrar y abrir donde es, etc), y que en ciertos lenguajes tienen problemas importantes. Eso si es mas universal. Asi que, aparte de decirle al compilador algo que se puede automatizar -donde termina un bloque- (y que personalmente he implementado, y no es tan difícil), que ganancia da, aparte de algo estético o de pura costumbre? Ahí es donde no me han dado ningún argumento, solo el decir: Es que X es muy bueno, mire como todo el mundo lo usa e igual tenemos Google Chrome. Es claro ahora? Ademas expuse que el caso de Go & Rust esta mucho mejor pensado el asunto. Cita:
Cita:
FALSO. Estamos haciendo software *olvidando* muchos de los avances en como hacer software, que se conocen desde hace mas de 50 años. Te pregunto: - Sabes que es una función pura? - Sabes que se puede reemplazar, en su totalidad o parcialmente, sin detener el programa, o sea corriendo, aun cuando este soportando una enorme carga de trabajo, un programa, sin fallas ni downtime? Y eso es algo que se puede hace decadas. Lo hacen? Yo no. Y eso que se que existe, pero es que ninguna de las herramientas que uso pueden hacerlo! - Sabes que el bound checking, que C/C++ no tiene, fue inventado hace mas de 3 décadas? Están usando los programadores de C "computación avanzada"? - Sabes que no hay porque, en pleno siglo 21, preocuparse por un Null Exception, porque eso esta resuelto, hace décadas también? - Sabes que se puede verificar que un programa no tiene errores de acceso de memoria? - Y que es posible garantizar que no hay deadlocks? - Sabes que hay muchos GC mejores de lo que imaginas? Que pueden hacer código MAS rápido que los que usan memoria manual? - Saben que lo ultimo que implementa C# 4/5, Java 8, estaba disponible para gente en 1980? Pero porque desafortunadamente C/C++/JS/PHP "ganaron" en números, todo ese software escrito durante todo ese tiempo (y aun ahora) no goza de ninguno de los avances en la computación -para programadores-? Saben cual es el estado del arte en nuestra área? Que tanto atrás o delante estamos, en herramientas y tecnología, con respecto a como eran las cosas hace 20 años? Cita:
* La respuesta pedante: Es NO. Combinar lenguajes no resuelve el problema. Sin embargo, por poner un ejemplo: Alguna vez has pensado porque puedes tener un valor NULL en cualquier momento? Y que tal si te dijera que es posible nunca, jamas, tener un NULL inesperado? Yo antes ni siquiera se me ocurriría tal cosa. Asi aunque no es posible en su totalidad esa meta, ni C, C++, C#, Java, Python, Ruby, Delphi, Lua, y muchos otros lenguajes mas comunes son un ejemplo de que tan lejos se ha llegado, osea, hace varios años ya. Se podria decir que cada uno ha recibido solo un "pedazo" de esos avances, unos mas que otros. Hay otros lenguajes que si están *mas* cerca. Pero no son populares. Es muy difícil. No tienen los números de su lado, o son muy bizarros en su sintaxis, o simplemente es muy difícil que un programador haga un cambio a algo nuevo. En especial si niega o ni siquiera puede concebir que existe un mejor camino. En especial lo segundo*. * Por poner un ejemplo: Cuantos programadores VB se pasan a Pascal al darse cuenta lo mejor que es? Naaaaa... miren cuanto software en VB esta hecho, y no le veo problemas.... Ademas si me esfuerzo mas, trabajo mas y escribo mas código hago lo mismo...
__________________
El malabarista. Última edición por mamcx fecha: 16-05-2014 a las 04:52:59. |
#40
|
|||||||||
|
|||||||||
mamcx
Cita:
Revisa esta información: Cita:
Cita:
Cita:
Cita:
Cita:
Cita:
Cita:
Cita:
Pregunto: ¿Te has puesto a pensar que con toda la base instalada de aplicaciones y conocimiento en C/C++ y sus lenguajes derivados no es aconsejable en términos prácticos el dar un salto brusco a los lenguajes que mencionas como más evolucionados?, todo se resume a lo práctico versus a lo ideal, sin importar cuan poderoso sea Erlang para manejar la concurrencia (Por ejemplo) si mi base instalada es de C#, seguirá siendo de C# o un derivado de este, con las excepciones del caso, lo mismo aplica a otros lenguajes En resumen: La fortaleza de C/C++ y sus derivados radica en sus extensas posibilidades de programación, no en su perfección de diseño, lo cual sumado a su gran base instalada, conocimiento acumulado y mejoras continuas hacen que estos lenguajes tengan asegurado un largo camino en el mundo de la computación del siglo 21. Nelson. Última edición por nlsgarcia fecha: 16-05-2014 a las 09:18:56. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Que me recomiendan? | D-MO | PHP | 2 | 08-12-2005 14:50:28 |
Que me recomiendan ? | Sundance | Gráficos | 2 | 06-08-2005 06:36:31 |
Me recomiendan un tutorial? | marceloalegre | C++ Builder | 5 | 09-06-2005 08:56:23 |
Me recomiendan Web Sites? | marceloalegre | SQL | 2 | 18-05-2005 23:19:57 |
Sistema en Red, Que me recomiendan.. | BlueSteel | Varios | 6 | 01-03-2005 17:46:09 |
|