Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 01-12-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
C++ es "odiado" mas que todo por su complejidad, lentitud de compilacion y y dificultades para entder el codigo (ya que al poder abusarse, se abusa de forma diferentes por diferentes personas!).

Por ahi esta el dicho de que "no existe" el lenguaje C++, solo existe dialectos particulares aplicados de forma divergente por diversas entidades.
__________________
El malabarista.
Responder Con Cita
  #22  
Antiguo 01-12-2016
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por roman Ver Mensaje
En lo particular, esa característica (que la asignación sea un operador) casi sólo la uso para ciclos en los que obtengo y uso un dato:
Código:
/*
  DameRegistro devuelve el siguiente registro o FALSE si no hay más registros
*/
WHILE registro = DameOtro() DO
BEGIN
  MuestraRegistro(registro)
END
Buen uso.

Hoy estuve trabajando con cierto método que quizá sirva de ejemplo:
Código Delphi [-]
  Function TuaByNodeIdDic <T>.TryGetValue (Const AKey :TuaDNodeId;
    Out AValue :T) :Boolean;
  Var
    LTried :Boolean;
  Begin
    LTried := System.False;
    Result := System.False;

    If AKey.IndexableByID Then
    Begin
      Result := TryGetValue (AKey.BinEncodedID, AValue);  // Sobrecarga (no recursivo)
      LTried := System.True;
    End;

    //...
  End;
Con "asignaciones expresivas" (por llamarles de algún modo) esa primera parte se reduciría un poco:
Código Delphi [-]
  Function TuaByNodeIdDic <T>.TryGetValue (Const AKey :TuaDNodeId;
    Out AValue :T) :Boolean;
  Var
    LTried :Boolean;
  Begin
    If Result := LTried := AKey.IndexableByID Then
      Result := TryGetValue (AKey.BinEncodedID, AValue);  // Sobrecarga (no recursivo)

    //...
  End;

Saludos.
Responder Con Cita
  #23  
Antiguo 02-12-2016
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.195
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por mamcx Ver Mensaje
C++ es "odiado" mas que todo por su complejidad, lentitud de compilacion y y dificultades para entder el codigo (ya que al poder abusarse, se abusa de forma diferentes por diferentes personas!).

Por ahi esta el dicho de que "no existe" el lenguaje C++, solo existe dialectos particulares aplicados de forma divergente por diversas entidades.
La complejidad es relativa al conocimiento del lenguaje, como en cualquiera. Si llamamos complejidad al uso de punteros, entonces delphi usado de esa forma, también lo es, aporta potencia y capacidad de bajar de nivel. Las dificultades de entender el código, como bien dices dependen del código, y éste de quien lo escriba. Delphi también permite ofuscarlo, aunque en menor grado. La lentitud de compilación al compararlo con delphi es cierta, pero insignificante. Compilar clipper si era lento (minutos eternos) cuando Borland C era un rayo. Lo de los dialectos de C++ dependen de la librería de clases y estas tienden al infinito, delphi puede comportarse de igual forma si salimos de la VCL, que de por sí ya puede considerarse un dialecto si partimos de pascal.

Lazarus adopta formas de C/C++ que de alguna forma son deseadas por los amantes de delphi



Al final se reduce a costumbres, más que el lenguaje en si mismo.


Saludos.
Responder Con Cita
  #24  
Antiguo 02-12-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por escafandra Ver Mensaje
La complejidad es relativa al conocimiento del lenguaje.
Solo cierto, IDEALMENTE. Eso es lo que se llama "complejidad necesaria" (https://en.wikipedia.org/wiki/No_Silver_Bullet).

C++ tiene mucho de lo que se llama "complejidad accidental o inesperada" que no se le puede achacar la culpa al usuario, es culpa del lenguaje, intrínseco a él.

Esto ni siquiera es un tema de opinión o controversial. Es un hecho claro y comprendido. El porque C++ ha tomado esta ruta, es parecido a otros lenguajes como Perl: Anteponer la capacidad de hacer algo de tantas formas posibles vs el estilo de lenguajes como Pascal/Python/Lisp: El tener la forma más simple y clara de lograr el objetivo, a costa de reducir la posibilidad de hacer cosas de forma diferente.

Obvio que eventualmente si se programa dia y noche en C++ todo parecera simple. Pero eso es pura costumbre. Cuando se aprende otros lenguajes se vuelve muy claro en que aspectos son mejores o peores.

Si uno compara C++ con otro lenguaje del mismo nivel, como ADA, Pascal o RUST es muy claro que C++ es mucho mas complejo. Si otros lenguajes tuvieran el minimo de maquinaria faltante para ser considerados "Systems languages", en terminos de pura sintaxis C++ queda borrado.

Desafortunadamente para todos en nuestra industria, C++ le gano a Pascal, y es la causa de millones de dolares en perdidas debido a ello.


----

Como un experimento interesante, busque en google "LANGUAGE X is too complex", usando C++, Delphi, Pascal, Python, Perl, Scala, Javascript.

Efectivamente, es tal como esperabas:

- C++, Scala, Perl, Javascript son considerados muy complicados como tal, como una falla inherente, un mal necesario de usarlos
- Delphi, Python, Pascal se discute la complejidad pero no tanto del lenguaje, sino de los proyectos o librerias externas, de interfazar con otros sistemas y cosas por el estilo. Tal como se espera de una herramienta mejor hecha que permite concentrarse en la tarea.

Una conclusion que es obvia si se tiene experiencia en varios lenguajes.
__________________
El malabarista.

Última edición por mamcx fecha: 02-12-2016 a las 03:28:09.
Responder Con Cita
  #25  
Antiguo 02-12-2016
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.195
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Porqué C ganó la batalla es un asunto que no viene al caso.

Como dije, es un asunto que depende mucho de la costumbre. Que C puede resultar algo más complejo que otros, no lo negaré. Para mí no lo es, quizás por costumbre. Pero si puedo decir, en el tema que nos ocupa, que a la hora de escribir código en delphi, echo en falta facilidades de C/C++, las mismas que los compañeros han reclamado en este hilo, como sobrecarga de operadores, expresiones de asignación y otras como el operador incremento/decremento, aritmética de punteros, bucle for estilo C, y tantas cosas. Quiero resaltar que me siento cómodo en delphi y mi intención no es polemizar sin más y mucho menos comparar.

mamcx, explicas porqué y a tu parecer, C/C++ es odiado (complejidad), pero no porqué es envidiado. Quizás dentro de su "complejidad" tenga algo bueno que aporte algo de "simplicidad" que facilite algunas cosas como se demanda en este hilo.


Saludos.
Responder Con Cita
  #26  
Antiguo 02-12-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por escafandra Ver Mensaje
mamcx, explicas porqué y a tu parecer, C/C++ es odiado (complejidad), pero no porqué es envidiado. Quizás dentro de su "complejidad" tenga algo bueno que aporte algo de "simplicidad" que facilite algunas cosas como se demanda en este hilo.
Porque es envidiado es fácil.

"C++ no te da alto desempeño. Te da el *control sobre el desempeño*".

Hay *muy pocos* lenguajes que son viables como "system languages" y que permiten tunear la estructuras de datos. C++/C es la opción más popular y por ende hay mucho código disponible.

Esta charla ejemplifica muy bien el tema:

https://channel9.msdn.com/Events/CPP...ata-Structures


---

Hay varias cosas de C++ que son interesantes. Es claro que C es mucho mas simple y en varios casos gente que empezo proyectos con C++ eventualmente se dieron cuenta que hubiera sido mejor usar C, pero igual C++ tiene cosas útiles, entre las cuales destaco:

- RAII : https://en.wikipedia.org/wiki/Resour...initialization, que permite manejar los recursos sin recurrir a un recolector de basura con retraso.

- Zero Cost Abstraction: C++ permite tunear las cosas para aplicar abstracciones sin incrementar el costo de ellas. Como por ejemplo, convertir una iteración en un loop estándar.

No es el único lenguaje que permite esto, y de hecho, es algo que puede lograrse en muchos lenguajes a mayor o menor grado, pero es un aspecto notable del mismo. Igual se puede hacer de "todo" con "cualquier lenguaje" pero en la práctica es una ilusión: Ciertos lenguajes & su comunidad se prestan más a la hora de actuar de cierta manera.


Siendo Delphi mucho mas cerca de C++ hay muchas cosas que podrían copiarle. No las partes complejas (o mejor dicho, su complicada implementación, como en el caso de los templates). Viendo como se va desarrollando RUST es claro que Delphi en vez de intentar ser una copia inferior de Java/C# puede ser una mejor opcion como lenguaje de sistema con la gracia de ser mucho mas claro y comprensible.

Eso no es imposible, porque Ada, Modula & Oberon son de la familia Pascal y pueden rivalizar con C++ a nivel técnico, sino fuera por su limitada difusión. Lo tremendo es que estos lenguajes incluso son mas simples que Delphi en muchas de las areas donde es complicado hacer cosas en Delphi, como la programacion paralela o asincronica.
__________________
El malabarista.

Última edición por mamcx fecha: 02-12-2016 a las 18:23:53.
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
Sobrecarga de propiedades jzginez OOP 2 21-02-2014 18:58:09
Duda operadores de clase waremovil C++ Builder 4 22-02-2012 09:58:46
Sobrecarga de constructores vejerf OOP 2 06-06-2008 13:52:36
Polimorfismo y sobrecarga davitcito Varios 3 15-04-2005 20:56:11
sobrecarga de operadores zuriel_zrf Varios 1 11-09-2003 14:08:36


La franja horaria es GMT +2. Ahora son las 17:13:28.


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