Ver Mensaje Individual
  #30  
Antiguo 15-05-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.939
Reputación: 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