Todos sabemos que Linus Torvalds no suele morderse la lengua, y tampoco lo ha hecho recientemente al dar su opinión del lenguaje de programación C++, del que afirma que es “un lenguaje de programación horrible”. Y eso sólo para empezar. Noticia original: thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918
menéame
A BSD todos!!!
Esto me recuerda a la famosa falsa entrevista al creador de C++:
www.gra2.com/article.php/20031118123221418
Entre icaza diciendo que OOXML es bueno por que el creador de gNumeric dijo que era muy fácil de implementar...y Ahora el amigo Torvalds diciendo que C++ no es bueno...
Sería ideal un Python, un Lua, un Ruby, un Freebasic, o afines, si pudieran tener la misma velocidad de ejecución que C y con un buen entorno de desarrollo. ;-)
El C++ no es mas que C con clases, no se por que se le dan tantas vueltas a esto, todo lo que puedes guarrear en C++, puedes guarrearlo en C, o ¿no hemos visto todos códigos en C llenos de variables de tamaño fijo en el stack, para cosas que deberían ser de tamaño dinámico y deberían ir en heap?
Si miráis una practica de un estudiante de primero de carrera (uno que no sea muy brillante, evidentemente, no todos son iguales) tendréis un ejemplo de ćodigo en C mal echo, así que eso no me vale como excusa para criticar al C++, que yo sepa las clases no facilitan en nada la creación de ćodigo basura
En fin...
Bueno, me temo que el C++ es bastante más...
www.research.att.com/~bs/glossary.html#GC++
Alguna razón tiene Linus cuando habla de lo fácil que es hacer mal código con C++, porque tiene más características de donde sacar malas prácticas... (Edito: aunque con esas formas de troll que le caracterizan...)
Aunque estoy contigo en que no me gustan nada las opiniones destructivas sin argumentos :)
Cuando se trata de construir software para hardware o para aplicaciones de proceso de datos en tiempo real, o tratas directamente con el procesador en ensamblador, o tratas con C/C++. Lo siento por los zoquetes, pero no hay más.
*C++ - a general-purpose programming language with a bias towards systems programming that supports procedural programming, data abstraction, object-oriented programming, and generic programming*
En el cual, lo que se dice, detrás de tanta palabrería es que es un lenguaje orientado a objetos (además es una descripción en 2 lineas, por lo que al ser tan corta, no puede ser entendida a rajatabla, por ejemplo, no dice que está basado en C)
Es decir, ¿con eso intentas rebatir lo que dije en #15? Con tu enlace me estás dando la razón.
Aun y así, vamos a ir un poco mas allá:
www.research.att.com/~bs/C++.html
donde clarament... » ver todo el comentario
www.conclase.net/historia.php
Según cita el autor de la conocida web:
Leyendo un libro de C++, encontré la inspiración.
Hablando de la historia de C++, el libro menciona que la primera versión, que evoluciono a partir del C, se llamó "C con Clases".
:)
Tiene narices que después de tantos años sigamos venerando a C, pero es la realidad, es un lenguaje cojonudo.
www.research.att.com/~bs/oopsla.pdf
lo que quería decir con que no es solo un "C on clases" es que además soporta otro tipo de programación no esencialmente orientada a objetos, como programación procedimental y programación genérica (con plantillas, STL...)
Lamento que mi comentario te haya sentado mal, a mi me gusta una discusión serena y sosegada... :)
Saludos
A veces, en comentarios escritos es un poco difícil notar el tono o intención con el que nos expresamos...sin embargo, lo único que quise decir, es que a fin de cuentas, me pareció un poco quisquilloso el comentario de matizar mi definición resumida y para que se entendiese, pero si tu única intención era la simple discusión serena y sosegada, mis mas sinceras disculpas por haberte malinterpretado.
Existen varias formas de divertirse programando, unos se lo pasan pipa con los punteros, definiendo mil variables de compilación, echandose 3 horas antes de ver nada.
Otros nos recreamos más en el algoritmo y este tipo de lenguajes, no es más que una carga molesta.
Por eso odio C y me encantan otros lenguajes como Python y Caml, porque puedes centrarte en resolver los problemas y algoritmos, en vez de tener que pelearte con otras cosas.
Un lenguaje de programación no tiene porque ser dificil para ser entendible y eficiente en la maquina, a la vez. Estoy esperando el día en el que algun inspirado invente un lenguaje entendible y eficiente, y este se extienda por todo el mundo y se convierta en estandar. Ese día prometo aprenderlo como el que más e intentar estar en el grupo de los mejores programadores. Pero por ahora me quedo con C, sus .h, structs en vez de clases, y ansi estandar y posix. Y que le den al C++.
Y creo que como yo, en meneame, hay muchos. xD
C++ no cumple lo siguiente:
en.wikipedia.org/wiki/KISS_principle
El otro punto es el tema de las malas formas de Linus. Es cierto que tiene mucho de troll, pero en este caso es el otro el que suelta la primera lindeza ("Please don't talk about portability, it's BS" - "no me hables de portabilidad, eso es mierda"). Si algún recien llegado a una lista de correo hablara así de algo hecho por mi le pondría de vuelta y media.
Puede que sus formas parezcan demasiado bruscas, ¿pero como pensais que reaccionariais si un "novato" os llama dinosaurio? (pongo novato entre comillas porque desde luego no son novatos comparados conmigo, pero probablemente si lo sean comparados con Linus)
No tengo más que añadir.
:lol: ... ¡Negativos a mi! ... :lol:
El problema es que para programar en C++ hay que conocerlo muy bien (para entender por qué hay una keyword "virtual" hay que saber qué es el Late Binding, para entender qué es el Object Slicing hay que saber qué es una Virtual Table, para no sufrir swallow copies hay que entender qué hace C++ con el operador ==...).
Pero claro, no va a ser el compilador quien te obligue, él simplemente hace lo que puede con lo que le das. Si le das C empaquetado en clases... pues eso tienes y así de bien irá.
La filosofía de C++ es dejar hacer al programador lo que quiera, y eso hace. Es tarea del programador saber qué le está mandando al compilador.
A la vez hay otras cosas mas simples que hacerlas por medio de clases en C++ es de masocas.
Depende de la complejidad del programa... Por ejemplo para un programa que simplemete tenga que leer ficheros y por ejemplo meter lo que haya en una base de datos, seria una tonteria andar diseñando clases... Sin embar... » ver todo el comentario
C++ ayuda y simplifica el trabajo del programador, pero en términos de máxima eficiencia, es susceptible de crear a problemas, especialmente de diseño.
Hay un dicho por ahí que dice, que cuando se tiene un martillo todo son clavos, y parece por los comentarios que se cumple.
C es un lenguaje más para un uso muy concreto (velocidad en ciertas tareas), y defenderlo como el mejor lenguaje en cualquier ocasión me parece de estúpidos (no va contigo :-)).
C es la mejor alternativa sin duda para programar un sistema operativo, pero Prolog... » ver todo el comentario
www.research.att.com/~bs/bs_faq.html#IEEE
El C++ se hizo con muy buena intención en una época en la que los concéptos de reusabilidad de código y programación orientada a objetos no estaban claros. El resultado fué el esperado, una chapuza. Sólo como ejemplo, los tipos genéricos en C++ requieren distinto codigo por cada tipo de clase diferente instanciada en tiempo de ejecución. En Java los tip... » ver todo el comentario
juanjoalvarez.net/introald (introducción en español)
en.wikipedia.org/wiki/D_(programming_language)
www.digitalmars.com/d/cppstrings.html (comparación entre cadenas en D y en C++)
Por cierto, la implementación libre de D (GNU D compiler, gdc) está en los repos de *ubuntu y debian. Cuando probé D por primera vez tuve que bajar gcc enterito, parchearlo y compilarlo.
www.99-bottles-of-beer.net/language-brainfuck-101.html
Respecto a las críticas de Torvald (si resultan ser ciertas y no la reedición del fake del 98), básicamente son críticas A LAS LIBRERIAS (boost, stl etc) y a su eficiencia, ¡como si alguien te obligara a usarlas o no fueran útiles para según que tipo de programas! ¿Un error en libc o glibc acaso invalidarían la utilidad del lenguage C? Amos hombre ...
- Excepciones: por cada programador que sabe utilizarlas correctamente, 4 realizan aberraciones que impiden descubrir la avería subyacente y 6 más las utilizan como parte del flujo normal del programa.
- Herencia multiple: la mejor forma de romperte la cabeza intentando prever el flujo de ejecución.
- Strings: son tan sencillas de utilizar que nadie se preocupa de la cantidad de trabajo que representa una sentencia tal que así:
std::string reason = "Ha ocurrido una excepcion " + exception.Type() + " en el modulo " + exception.Where();
Luego descubres que ese código está en el manejador de una excepción std::bad... » ver todo el comentario
- El mal uso de las excepciones ocurre cuando se intentan usar como una estructura de control más y no para lo que fueron diseñadas, es decir, las situaciones no manejables (supongo que te refieres a eso con lo de "mal uso"). Pero si un programador decide abusar de gotos, variables globales, excepciones o cualquier otra "feature" eso no es culpa del lenguaje, sino suya.
- La herencia múltiple sólo es una posibilidad, nadie te obliga a usarla. Romperte la cabeza con ella es OPCIONAL, pero tienes otras alternativas como trabajar con ella a modo de los interfaces de Java, o simplemente ignorarla.
- Strings: toda la razón ... en que son sencillas de utiliz... » ver todo el comentario
el que haya trabajado con punteros en C++ sabrá a que nos referimos Linus y yo... jejeje
Linus no es para nada un representante del software libre, i se ha mostrado abiertamente en contra de sus principios, símplemente trabaja en el.