Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
mamcx

Cita:
Empezado por mamcx
...Es importante anotar que es PEOR en el caso de los lenguajes con {} y tonterías innecesarias como esas...
Pregunto : ¿Todos los lenguajes que usan como delimitador de bloques los caracteres {} estan mal diseñados?, ¿Es decir que C, C++, C#, Objetive-C, Java, JavaScript y el futuro M# están mal diseñados?, de ser así gran parte del software desarrollado a nivel mundial (Y por venir) tiene entonces un problema de base.

En lo personal, no veo ningún problema en el uso de de las llaves {}, espacios o begin-end, como delimitadores de bloque, cada lenguaje tiene sus pro y sus contras, cada lenguaje tiene un campo de acción definido y es sobre ese hecho que debe o no ser utilizado, quizás como personas tengamos determinadas preferencias estéticas, pero al final un lenguaje es una herramienta para un fin, si cumple dicho fin en gran medida entonces es probablemente la herramienta indicada y no necesita ser estrictamente perfecta.

Sería interesante preguntarle a Anders Hejlsberg por que incluyo las llaves {} en C# dado que el es el creador de Turbo Pascal y Delphi

Nelson.

Última edición por nlsgarcia fecha: 15-05-2014 a las 01:03:07.
Responder Con Cita
  #2  
Antiguo 15-05-2014
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por nlsgarcia Ver Mensaje
Sería interesante preguntarle a Anders Hejlsberg por que incluyo las llaves {} en C# dado que el es el creador de Turbo Pascal y Delphi
He comentado otras veces que mi favorito, con mucha diferencia, es el lenguaje C.
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 {}
Responder Con Cita
  #3  
Antiguo 15-05-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por nlsgarcia Ver Mensaje
¿Todos los lenguajes que usan como delimitador de bloques los caracteres {} estan mal diseñados?, ¿Es decir que C, C++, C#, Objetive-C, Java, JavaScript y el futuro M# están mal diseñados?, de ser así gran parte del software desarrollado a nivel mundial (Y por venir) tiene entonces un problema de base.
Eeee... no es obvio que es el caso? GRAN parte del software desarrollado a nivel mundial *efectivamente* tiene problemas de base. Eso es un hecho.

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:
This book is the result of nearly two decades of minor frustrations, serious bugs, late nights, and weekends spent involuntarily at the keyboard. This collection consists of 99 of some of the more common, severe, or interesting C++ gotchas
Y lo mismo se puede sacar fácilmente sobre PHP, JavaScript y otros.

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:
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.
Para notar:

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:
Empezado por nlsgarcia Ver Mensaje
En lo personal, no veo ningún problema en el uso de de las llaves {}, espacios o begin-end, como delimitadores de bloque
Técnicamente?, no hay ninguno. Incluso python tiene delimitadores (aunque hay lenguajes que NO tienen ninguno: LISP y familia).

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:
Empezado por nlsgarcia Ver Mensaje
Sería interesante preguntarle a Anders Hejlsberg porque incluyo las llaves {} en C# dado
Nelson.
Eso es muy fácil. C# es un derivado de C, y originalmente un parecido de Java. Siendo tal el caso, no había de otra. Que Anders creyera que eso era *realmente* importante? Lo dudo. Es una hipótesis que se sustenta en el hecho que en la comunidad de implementadores de lenguajes, los derivados de C son los que están *mas por debajo* en la escala de lo que es ideal (no falta sino darle una vuelta larga a http://lambda-the-ultimate.org/ para ver lo que realmente les gustaría hacer...).

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.
Responder Con Cita
  #4  
Antiguo 15-05-2014
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
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"
Responder Con Cita
  #5  
Antiguo 15-05-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Todos esos problemas que citas con los proyectos que enlazas, no son problemas del lenguaje sino de los programadores.
Si hace una app contable, y pones: Valor Factura (Decimal): Y el usuario pone: "A mi que me importa", y el sistema lo acepta, es error de quien?

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:
int foo (a)
    { if (
a) return(1); } /* buggy, because [b]sometimes[/b] no value is returned  */ 
Algunas veces? Es eso un error del programador? El saber o no si *algunas veces* eso es o no valido?

Código PHP:
 struct eeh_type
    
{
            
uint16 size:          10;   /* 10 bits */
            
uint16 code:           6;   /* 6 bits */
    
}; 
Cita:
Depending on which C compiler, and which "endian" flavor of machine you are on, this might actually be implemented as
<10-bits><6-bits>
or as
<6-bits><10-bits>
Osea, que 6bits es realmente 10 bits? Es eso un error del programador?

Código PHP:
foo(pointer->memberpointer = &buffer[0]); 
Cita:
Works with gcc (and other compilers I used until I tried acc) and does not with acc. The reason is that gcc evaluates function arguments from left to right, while acc evaluates arguments from right to left.
Es eso un error del programador? Porque juraria al ver ese codigo que siempre se evalua de izq-der. Excepto cuando no?

http://www.slate.com/articles/techno...ly_simple.html
Código PHP:
if ((err SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
                goto 
fail
Es un error del programador? Uno imaginaria que el compilador debe decir que la sintaxis esta mala. Porque rayos es valido hacer un if decapitado?

Código PHP:
 int numbers[] = { 001,        // line up numbers for typographical clarity, lose big time 
                           
010,        // 8 not 10 
                           
014 };     // 12, not 14 
Not convinced ? Try atoi("000010"); 
Es esto un error del programador?

Cita:
Empezado por Casimiro Notevi Ver Mensaje
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
Es equiparable porque comparten el hecho de que son la misma familia, y tienen problemas de diseño. Ej:

http://www.standardista.com/javascri...cript-gotchas/
Código PHP:
    var bad  '<ul id="myId">
                   <li>some text</li>
                   <li>more text</li>
                </ul>'
// unterminated string error

    
var good '<ul id="myId">' +
                   
'<li>some text</li>' +
                   
'<li>more text</li>' +
               
'</ul>'//correct 
Visualmente el mismo código, uno es malo, el otro no. Flipen por la causa. Y de que sirvio sus delimitadores?

Y PHP? Siguiendo la tradición:

http://code.tutsplus.com/articles/ar...akes--net-2894

Código PHP:
$i 0;
while(
$i 20); {
  
//some code here
  
$i++;

Cita:
4. Missing Semicolon After a Break or a Continue
Que es el mismo lio en C, C++, JS.

Así que, no son comparables?

Y noten:

http://www.developerdrive.com/2011/1...coding-in-php/
Cita:
Unfortunately, a basic text editor won’t tell you if something isn’t right.

One of the most common, and basic, mistakes made when coding in PHP* is to either forget or misplace a quote, brace or semi-colon causing a syntax error
*Y C, C++...

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:
Empezado por Casimiro Notevi Ver Mensaje
Nunca me llaman por problemas.
Me parece ridículo culpar a C de los problemas, diciendo que tiene un problema de "base"
Te hago una pregunta: Que tan seguro estas de que no tienen problemas (me refiero, del tipo que pongo aqui)? Correle http://valgrind.org/ a ver que te sale. Lo pregunto precisamente porque es muy posible que uno se confie de que hace las cosas bien, incluso a nivel fundamental, pero al correr un analisis se ven problemas que ni uno se imagina. Eso es algo que me ha tocado ver con obj-c donde al correr el chequeador se pillan errores que ni a leguas uno se imaginaria son un problema. Mucho de los exploits y bugs de seguridad que han costado millones son debido a que los programadores pusieron algo ahi, y el programa "funciona", pero esta mal programado y tiene una falla oculta. Por ejemplo, los Chequeos de rango son una fuenta inmensa de problemas potenciales. El caso del tipo de datos string (null terminated) es uno de los mas graves problemas que hay, como seguramente saben.


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.
Responder Con Cita
  #6  
Antiguo 15-05-2014
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por mamcx Ver Mensaje
Si hace una app contable, y pones: Valor Factura (Decimal): Y el usuario pone: "A mi que me importa", y el sistema lo acepta, es error de quien?
Del programador, sin duda.

Cita:
Empezado por mamcx Ver Mensaje
(c, c++, js)Es equiparable porque comparten el hecho de que son la misma familia, y tienen problemas de diseño. Así que, no son comparables?
No son comparables, para nada.

Cita:
Empezado por mamcx Ver Mensaje
Te hago una pregunta: Que tan seguro estas de que no tienen problemas
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.
Responder Con Cita
  #7  
Antiguo 15-05-2014
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.025
Poder: 28
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
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:
Empezado por Casimiro Notevi Ver Mensaje
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
Totalmente de acuerdo contigo, Casimiro.

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.
Responder Con Cita
  #8  
Antiguo 15-05-2014
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Ñuño Martínez Ver Mensaje
Un despiste en la sangría y te genera un error en tiempo de ejecución muy difícil de rastrear.
De hecho es todo lo contrario, a menos, claro, que no sepas lo que estás programando. La correcta anidación, independientemente del lenguaje que uses, sigue el orden lógico del pensamiento. Y Python, en este aspecto, evita precisamente que te apartes de ese orden.



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:
Empezado por nlsgarcia
En lo personal, no veo ningún problema en el uso de de las llaves {}, espacios o begin-end, como delimitadores de bloque, cada lenguaje tiene sus pro y sus contras, cada lenguaje tiene un campo de acción definido y es sobre ese hecho que debe o no ser utilizado, quizás como personas tengamos determinadas preferencias estéticas, pero al final un lenguaje es una herramienta para un fin, si cumple dicho fin en gran medida entonces es probablemente la herramienta indicada y no necesita ser estrictamente perfecta.
// Saludos
Responder Con Cita
  #9  
Antiguo 15-05-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por Ñuño Martínez Ver Mensaje
Un despiste en la sangría y te genera un error en tiempo de ejecución muy difícil de rastrear.
Obvio que saca un error. Pero se puede detectar leyendo el codigo, porque las reglas son claras. No es como en los lenguajes donde tienen marcadores defectuosos, donde como lees no es necesariamente como ejecuta:

Código PHP:
if si edad<20:
  print 
"estudia para el futuro"
print "eres un jovencito"
hazotracosa 
Dice *exactamente* que es lo que hace el codigo. Osea: Python hace lo correcto. Lo peor es lo que hace JS/C/C++: No como esta escrito necesariamente es lo que hace. Ese es el problema que estoy hablando: Que la sintaxis no refleja bien la semantica del lenguaje.


Cita:
Empezado por Ñuño Martínez Ver Mensaje
Finalmente, aborrezco los lenguajes con colector de basuras por buenas razones.
Y el problema? Es Javascript & PHP. De los menos mejor diseñados, y no asombra que tenga deficientes GC, asi como son deficientes en todo otras cosas. Contraste? El GC de Java, .NET, Haskell, Erlang, Nimrod, Obj-c (no es tanto un GC en si pero funciona igual), LuaJit, etc son excelentes y son MUCHO mas óptimos para los casos generales que hacerlo manual. Hay uno y solo un verdadero caso para que un lenguaje es mejor que no tenga un GC: Se requiere garantizar operación en hard realtime y control exacto del uso de la memoria.

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.
Responder Con Cita
  #10  
Antiguo 15-05-2014
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por mamcx Ver Mensaje
Código PHP:
if si edad<20:
  print 
"estudia para el futuro"
print "eres un jovencito"
hazotracosa 
Dice *exactamente* que es lo que hace el codigo. Osea: Python hace lo correcto. Lo peor es lo que hace JS/C/C++: No como esta escrito necesariamente es lo que hace. Ese es el problema que estoy hablando: Que la sintaxis no refleja bien la semantica del lenguaje.
Para nada se puede estar de acuerdo con eso.

Código:
if si edad<20
begin
            print "estudia para el futuro"
  print "estudia para el futuro"
       print "eres un jovencito"
end
     hazotracosa
Creo que de esa forma, con un inicio y final de bloque sí que no hay ninguna duda, ningún error, ningún despiste...

Cita:
Empezado por mamcx Ver Mensaje
Un GC es prácticamente un requerimiento para hacer codigo eficiente & correcto hoy dia y a futuro.
A mí me parece una solución creada para los malos programadores que se olvidan de liberar memoria
Responder Con Cita
  #11  
Antiguo 15-05-2014
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #12  
Antiguo 15-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
mamcx,

Cita:
Empezado por mamcx
...GRAN parte del software desarrollado a nivel mundial *efectivamente* tiene problemas de base. Eso es un hecho...
El problema de la ingeniería de software es que no hay una forma efectiva de estandarizar la creación del software, partiendo de este punto el crear software es una combinación de arte y técnica lo cual si no se siguen buenos principios de diseño y programación se puede incurrir en grandes fallas difíciles de corregir y probablemente muy costosas dependiendo del ámbito de implementación del software, pero lo anterior es común a todos los lenguajes, el hecho de que un lenguaje tenga bases en C/C++ no implica que tenga ningún problema de base, solo implica que deben seguirse ciertos principios para su correcto uso, pero lo mismo aplica a todos los lenguajes si se quiere hacer software de calidad y resiliente a fallas.

Cita:
Empezado por mamcx
...No es como en los lenguajes donde tienen marcadores defectuosos, donde como lees no es necesariamente como ejecuta...Que la sintaxis no refleja bien la semántica del lenguaje...
Linux es quizás el SO más versátil y eficiente de la historia de la computación, se le puede usar en una miríada de dispositivos (MainFrame, MiniComputadores, Servidores, Computadores Portátiles y de Escritorio, SmartPhones y Sistemas Embebidos) y su lenguaje base es C, ¿Por que es tan exitoso y tan ampliamente usado algo hecho en C si este lenguaje supuestamente tiene fallas de base?, la respuesta esta en las buenas prácticas de diseño y programación aunado a extensas pruebas y seguimiento de la implementación, algo que debe ser común a la ingeniería del software en general independientemente del lenguaje utilizado.

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.
Responder Con Cita
  #13  
Antiguo 15-05-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por nlsgarcia Ver Mensaje
el hecho de que un lenguaje tenga bases en C/C++ no implica que tenga ningún problema de base, solo implica que deben seguirse ciertos principios para su correcto uso, pero lo mismo aplica a todos los lenguajes si se quiere hacer software de calidad y resiliente a fallas.
Realmente? En serio? Los buffer overflow son una de los problemas que estos tienen. Son un vector de ataque, causan crash, son jodidos de depurar y todo eso. Como se arregla?

https://en.wikipedia.org/wiki/Buffer...mming_language

Cita:
The choice of programming language can have a profound effect on the occurrence of buffer overflows. As of 2008, among the most popular languages are C and its derivative, C++, with a vast body of software having been written in these languages
......
Examples of such languages (que no tienen ese problema de base) include Ada (podria reemplazar a C/C++, sino fuera porque pailas, son mas populares), Eiffel, Lisp, Modula-2, Smalltalk, OCaml and such C-derivatives as Cyclone, Rust and D (todos estos, podrian reemplazar C/C++).
Cita:
Empezado por nlsgarcia Ver Mensaje
Por que es tan exitoso y tan ampliamente usado algo hecho en C si este lenguaje supuestamente tiene fallas de base?
Supuestamente? No, TIENEN fallas de base. Que se controlan, como dices, con disciplina y el hecho de que los programadores de linux, en especial de lo importante, son de alto nivel. EL asunto es: En su momento, aparte de C/C++, que opcion hay para hacer un OS?

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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 07:27:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi