EDICIóN GENERAL
222 meneos
3424 clics
El monumental impacto del lenguaje de programación C [ENG]

El monumental impacto del lenguaje de programación C [ENG]

C es un lenguaje tan fundamental que muchos de nosotros olvidamos cuánto ha cambiado. Técnicamente un lenguaje de alto nivel en el sentido de que requiere que un compilador para que el código sea ejecutable, aunque es lo más parecido al lenguaje ensamblador que a la gente le gusta tener en estos días (fuera de entornos especializados de poca memoria). También se considera que es el lenguaje que hizo posible casi todos los lenguajes que vinieron después.

| etiquetas: impacto , c , lenguaje de programación c , unix , pdp-7
107 115 0 K 245 SysDevs
107 115 0 K 245 SysDevs
Comentarios destacados:                    
#2 #1 Ya te digo. Y cuando falleció Steve Jobs tiempo después, todos los medios explotaron. Y días y más días hablando sobre un tío que:
- Su único y verdadero mérito fué fundar, dirigir y popularizar su empresa (Apple). No diseñó ni creó nada para la posteridad.
- Era un tipo de cuidado que maltrataba a sus empleados.
- Acabó por deshacerse como si nada de la verdadera mente pensante que diseñó sus primeros ordenadores, Steve Wozniak, el cual supuestamente era su amigo.
- Y más cosas que hubo y que seguramente no han contado.

Y de Ritchie, como muchos otros genios que si nos dejaron un legado científico/tecnológico/artístico, algo realmente útil para la humanidad, ninguna mención en absoluto.
Sin embargo; la muerte de un genio de la informática como Dennis Ritchie, que creó este lenguaje para reescribir UNIX, pasó casi desapercibida para la inmensa mayoría de la gente.
#1 Ya te digo. Y cuando falleció Steve Jobs tiempo después, todos los medios explotaron. Y días y más días hablando sobre un tío que:
- Su único y verdadero mérito fué fundar, dirigir y popularizar su empresa (Apple). No diseñó ni creó nada para la posteridad.
- Era un tipo de cuidado que maltrataba a sus empleados.
- Acabó por deshacerse como si nada de la verdadera mente pensante que diseñó sus primeros ordenadores, Steve Wozniak, el cual supuestamente era su amigo.
- Y más cosas que hubo y que seguramente no han contado.

Y de Ritchie, como muchos otros genios que si nos dejaron un legado científico/tecnológico/artístico, algo realmente útil para la humanidad, ninguna mención en absoluto.
#2 Y se murió por hacer el estúpido. Y sus ordenadores funcionaban con software propietario.
#2 #1 he entrado sólo para ver a los cansinos de siempre quejarse de que la gente conoce a Jobs y no conoce a Ritchie. Y no habéis decepcionado.

Venga, ya que sois tan listos, decidme el nombre de los descubridores de al menos 3 de las vacunas que os habéis puesto.

Ah no, que conocéis a Ritchie porque sois unos frikis pero tampoco tan cultos.
#36 Yo sé al menos el nombre de uno: Alexander Flema :troll:
#36 Si precisamente #2 ha criticado eso, que estos mercaderes se hacen hiperfamosos y los que de verdad hacen los avances ni nos suenan.
Has entrado a vendernos tu moto y ni lees lo que estás respondiendo.
#46 normal. Yo también conozco al dependiente de mi panadería pero no conozco el nombre de cada uno de los grandes científicos vivos y vividos.

Pero porque conozca un nombre que tú no, no voy a venir de “ohhh cómo no puedes conocerlo, nos vamos a la mierdaa”.

Y menos Dennis Ritchie, que con la misma matraca que pegáis cada vez que sale una noticia sobre él, a esta hora debe ser ya más conocido que CR7
#53 Yo no conozco a Dennis Ritchie. No lo pillas.
#36 Algunos me consideran un poco friki... pero recuerdo que cuando me pusieron la vacuna de la Tuberculosis en un internado, en los papeles ponía Pasteur y las que no me pusieron porque por entonces (años 50) esa aún no era de uso masivo y la mayor parte de la gente del rural ni la conocía Poliomielitis: 1ª Jonas Salk. 2ª Albert Sabin.

También recuerdo que me vacunaron contra la Viruela, pero no conozco al que la descubrió!! aunque he visto el método en un par de películas.

El trabajo de…   » ver todo el comentario
#49 muy bien, sabes buscar en la wikipedia
#52 Si tu hubieses tenido Poliomielitis a los 3 meses de edad en los 50 y sufrieses las secuelas durante las décadas que yo las he sufrido, porque a tus padres nadie les dijo nada de esa vacuna (ni de ninguna otra en aquella época); te aseguro que nombres como, Salk/Sabin y Ottobock, los tendrías grabados a fuego en el cerebro.

Si tu primer OS hubiese sido Unixware (principios de los 90), te aseguro que conocerías de sobra a Dennis Richie y Kenneth Thompson. Este enlace que puse en el…   » ver todo el comentario
#36 ¿Y que comentario crees que es peor? El que se queja de no concer a Ritchie? o el que viene despues a defender al otro? Por que te crees moralmente superior si basicamente esas haciendo lo mismo? pero aún peor, el parte de un razonamiento lógico, en base a los méritos de esas personas, y lo tuyo es puro fanboyismo. Se nota que eres de los que lleva la manzanita en el corazón.
#36 para empezar negativo por descalificar.

Yo no me quejaba de que la gente los conociera o no, sino del agravio comparativo de los medios de comunicación a la hora de tratar las noticias. Menosprecio a los medios, no a la gente. No puedes ir tan de listo y con ese tono de autosuficiencia si no comprendes el sentido de lo que lees.
#2 Sobre un tio que amasó mucha pasta.
#2 "No diseñó ni creó nada para la posteridad." Joer, un poco de justiia. Ese tirano reventó industrias enteras, para bien.
#2 Todo lo negativo como déspota que era es cierto. Pero cuidado, que al decir que no hizo nada estás muy equivocado. Es como decir que Von Braun o no hizo nada porque el trabajo lo hicieron los obreros.

Jobs no era un obrero, era el director de la orquesta, y si en el software libre hubiera uno como él, hace años que Linux estaría en el escritorio en la mayoría de los computadores. No lo está porque ni siquiera saben cuál es el problema y mucho menos cómo solucionarlo, ni siquiera si se les dice serían capaces de verlo, entenderlo y corregirlo, tienen que pasar 50 años más para que comiencen a entenderlo y solucionarlo.
#45 hace años que Linux estaría en el escritorio en la mayoría de los computadores.

Aparte de las mentes de los que deseáis que GNU/Linux esté en el "escritorio"; yo no conozco a ningún desarrollador (de las principales distribuciones, en las que se inspiran todas las demás: Slackware, Debian, Red Hat) que se plantease ese objetivo o esa meta!! ninguno.

Y no tengo claro que por el hecho de que un magnífico "director de orquesta" tan preocupado en acumular dinero…   » ver todo el comentario
#50 "Aparte de las mentes de los que deseáis que GNU/Linux esté en el "escritorio"; yo no conozco a ningún desarrollador (de las principales distribuciones, en las que se inspiran todas las demás: Slackware, Debian, Red Hat) que se plantease ese objetivo o esa meta!! ninguno"

Linux domina en los servidores. ¿Para qué trabajan en un escritorio?, ¿solo para hacer piruetas y acrobacias técnicas?, ¿no les interesa que la gente use lo que debe estar diseñado para el uso…   » ver todo el comentario
#51 Lo que tu digas :-D
#1 Casi... me encanta que no hayas generalizado, como #2 cuando escribe "ninguna mención en absoluto"; porque, pocas menciones o muchas pero en un ecosistema muy técnico, no son ninguna.

"Sencillamente, encontrar algo en el mundo de la computación actual que no haya sido tocado por el genio de Ritchie es una tarea muy difícil": thingoldedoriath.wordpress.com/2012/01/04/thompson-and-ritchie-the-phi
#2 Como si hubieras descrito a Edison.
Python sería mucho mejor en mi opinión si adoptara la estructuración mediante llaves de C.
Y lo mismo podría decir de Lisp, que con tantos paréntesis no hay quién se aclare.
#3 tienes Caml; que es como List of Insipid and Stupid Parenthesis, pero legible. :-D

Con lo de Python discrepo. Cuantas menos llaves, paréntesis, corchetes, etc. mejor. :-)
#4: Pues a mi la separación del código con llaves me ayuda mucho, lo de poner espacios me recuerda más a Whitespace que otra cosa.
en.wikipedia.org/wiki/Whitespace_(programming_language)
#4 Si quitas las llaves (que son visibles) y lo sustituyes con espacios o tabuladores (invisibles) tú me dirás en que mejoras..
#9 el tabulado es visible. Y ahorra un montón de espacio.
#11 A lo mejor será que yo no tengo esa habilidad, pero si abro en un editor un fichero de texto con 2 líneas, una de ellas un tabulador y un punto y la otra 8 espacios y un punto, no soy capaz de distinguir cual es cual sólo mirándolo.
#12 Es que eso no es relevante para el código (aunque si estás usando 8 espacios para cada nivel de indentación tu código debe ser ilegible). 8 espacios y un tabulador (usando tabs = 8 espacios) son equivalentes tanto visualmente como a nivel de código para la mayoría de lenguajes. Única excepción que se me ocurre ahora mismo son los Makefiles.

Las llaves sirven para tener discusiones sobre estilos, ocupan un montón de espacio (sobre todo vertical, salvo que las pongas junto al código y entonces pierden su utilidad visual).

Una de las muchísimas cosas que Python hace bien es utilizar el nivel de intentación como marcador de bloque. Las llaves son innecesarias.
#13 Como que no es relevante para el código?? En python no puedes identar con espacios y tabuladores, usas uno u otro, pero nunca los dos a la vez, y eso con un editor de texto estandard no lo ves.

Ahora, y aunque no venga al caso, la forma estandard de representar un tabulador son 8 caracteres. Si tu tienes tu editor configurado para que el caracter tabulador se vea como 2 o 4 espacios genial, se verá así en tu editor, pero en un editor estandar tienes muchas posibilidades de que se vean 8…   » ver todo el comentario
#15 En python puedes editar con las dos cosas si quieres siempre y cuando el indentado calculado sea correcto.

Python tiene un estándar de estilo de código (PEP8) para el que hay herramientas de validación (como flake8) que hacen todo el trabajo por ti, y por supuesto cualquier editor actual te ayuda en tiempo real. Convertir "todo a espacio" o "todo a tab" lo hace cualquier editor.

Desde luego, no usar un editor en condiciones por si algún día tienes que hacer una…   » ver todo el comentario
#17 Pero quién ha dicho que yo uso un editor de mierda?? Para el dia a dia tengo mi querido Emacs que hace todo lo que necesito y más.. Pero no siempre estás editando algo tranquilamente en tu máquina.. Y en esos malos momentos los lenguajes que definen los bloques implícitamente te añaden una dificultad extra.

Eso sí, el problema de tener que adaptar tu la identación en la refactorización no te lo quitas con ningún editor, precisamente por ser la identacion la que define los bloques y no los…   » ver todo el comentario
#18 En python puedes mezclar tabs y espacios si quieres. Pruebalo.

Reemplazar llaves con indentación soluciona muchos problemas. De espacio, de estilo y de legibilidad. Ahora, si no te gusta el lenguage el problema es otro.
#19 De www.python.org/dev/peps/pep-0008/#tabs-or-spaces:
"Python 3 disallows mixing the use of tabs and spaces for indentation."
#22 Yo lo he probado en p2
Pero no edites con nada que mezcle...
#20 anda, goto #18..
#21 vale veo que en ese comentario te retractas con lo del editor :-P

Lo de la indentacion si que es verdad. Yo no tengo ese problema porque el código que escribo son muy pocas líneas, pero me creo que pueda pasar.
#15 Es que partes de la premisa absurda de que no tienes un editor en condiciones. Que vas a ponerte a programar en el bloc de notas de Windows? En editores así de básicos te puede tocar cambiar algún archivo de configuración o cosas así pero no programar python.

Yo junto con c, son los únicos lenguajes que conozco y no hay color, me quedo con python mil veces. No lo uso a diario ni mucho menos pero cuando tengo que hacerlo es que me resulta super fácil e intuitivo.
#15 Ramen, hermano!
#15 yo en el sublime y en el phpstorm veo los espacios perfectamente, sólo hay que activar la opción.
#13 indentar con tabs = patada en la boca.

Excepto en los lenguajes que te obligan, como Go.
#38 Todo tiene su origen y su explicación, que en tecnología de los 70 suele ser el coste de la memoria y el almacenamiento. Normalmente en estas discusiones puedes acertar la edad de los participantes por su preferencia personal.
#3
Las llaves y paréntesis van estupendas porque el editor puede seguirlas. Para navegar por el código es perfecto.

De otro modo hay que buscar bloques de espacios a la misma distancia. Si metes sentencias en una misma línea, olvídate.
#6 te obliga a formatear el codigo correctamente ;)
#3 ¿Sería mucho mejor en qué? ¿Funcionaría más rápido?

Vaya tonterías que lee uno últimamente por aquí.
#7: En ver mejor lo que se programa.

Yo es que Python no tengo por dónde agarrarlo, es horroroso.
#14 Sin acritud, pero no tienes ni idea de lo que hablas.

Python usa los tabuladores para separar los bloques precisamente para obligar a escribir código legible.

Con bloques separados por llaves puedes escribir código de distintos bloques en el mismo nivel de indentación, con bloques separados por el nivel de tabulación no, por lo que te obliga a escribir código legible.

Se entiende mejor con un ejemplo, este código en C, Java o en cualquier otro lenguaje con bloques separados por llaves es…   » ver todo el comentario
#27: Me imagino que respondiéndome habrás encontrado uno de los principales problemas de Python, y es que si copias y pegas el código en foros de Internet basados en HTML, este deja de funcionar. El código de C en cambio nunca pierde la funcionalidad.

En C la indentación puedes hacerla a tu gusto, y esa libertad a mi me gusta. Pero además, hay indentación automática, muchos editores la tienen, así que si te pasan un código cuya indentación no te gusta, sólo tienes que usar es función y ya…   » ver todo el comentario
#29 Cierto, es muy molesto copiar ejemplos de código de ejemplo y que siempre estén dando por culo las indentaciones.
#29 Como esa libertad existe.... siempre encuentras código escrito como sale le sale a cada uno de ahí....Llaves que se abren y se cierran en diferentes puntos sin un orden aparente....Con Python llevas un orden porque la escritura siempre se realiza igual porque además el propio código te obliga a ello.
La libertad que puede darte C, Java, PHP... y otros lenguajes que no tienen unas pautas de escritura específicas dan origen a un código a veces ilegible y mal organizado.
Cada lenguaje tiene sus particularidades, pero no creo que Python sea mejor por utilizar {}
#76: Eso es culpa del que programa, no del lenguaje.

Es más, si está trabajando en un grupo y hay unas normas, tendrá que seguirlas y punto.
Pero si esa persona hace el código en su tiempo libre o por su cuenta... programará como a él le parezca, no como el autor del lenguaje decida. Yo lo veo bien, porque siempre puedes usar un formateado automático, muchos editores tienen esa función.
#27 por algún motivo a algunos os parece mejor restringir la libertad de que cada uno pueda indentar como le salga de las pelotillas. En C, Java yo tengo la libertad de definir el estilo de código que yo quiera y hay herramientas para obligar a que los desarrolladores sigan ese estilo. En python tu tienes que codificar como te impongan y punto. Por qué motivo se piensan en posesión de la verdad? Vamos a obligar a indentar así, que si no los desarrolladores se nos desmadran. No lo veo justificable.
#27 if x == 3:
----funcion()
Aunque no me termino de apañar cuando por ejemplo, la línea se hace muy larga y hay que cortarla.
Soy neófito, pero me gusta editar a veces con el Geany. Me cae bien.
#14 Ah entonces es tu opinión personal. Tu comentario daba a entender que Python sería mejor para todo el mundo, no sólo para ti.
#14 Tiene usted razón.

int i;main(){for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"hell
o, world!n",'/'/'/'));}read(j,i,p){write(j/p+p,i---j,i/i);}

Donde va a parar. :troll:
#78: Al menos funciona, prueba a copiar y pegar código de Python desde un PDF y luego mira si funciona o no. :-P
#80 Pero que casuística infernal es esta. Y si "pintas" el código de C en un png luego no puedes hacer copia/pega.
El problema del lenguaje va a ser que un formato pensado para la impresión no te permite hacer copia/pega correctamente.

Pero el origen de mi troleo esta dirigido a la supuesta legibilidad de C gracias a su delimitador de bloque.
#7 Sería mucho más legible.
#3 La pesadilla de los paréntesis vuelve en javascript, con librerías como lodash y con las funciones lambda.
#3 ¿estás troleando?
C es dios y Unix su profeta.
Solo puedo decir eso sobre este pedazo de lenguaje. Mi preferido en todo.
Es el primer lenguaje de programación que aprendí y gracias a su sintaxis me fue más fácil trabajar con otros después, utilizaba Turbo C allá por el 2001, como si fuera ayer, qué recuerdos :foreveralone:
#62 los sucesores de C son Rust y Go
#64 Sinceramente, los desconozco. Llevo tiempo fuera de la programación.
Pero, ¿se puede programar a bajo nivel como es capaz de hacer C? Pregunto.
#64 Solo Rust podría ser sucesor de C, Go esta demasiado limitado como para programar sistemas.
Y esto lo digo utilizando diariamente GO y con conocimientos leves de Rust.

Go para crear utilidades de sistema, "backends" o incluso frontales web es casi insuperable por su balance de rendimiento, simplicidad y bajo esfuerzo en el desarrollo. El binario estático hace que los despliegues sean muy fáciles sin necesitar contenedores para las dependencias.

Pero en sistemas empotrados, "firmwares", sistemas operativos, etc se necesita mas flexibilidad y rendimiento.
No se puede negar el impacto de C, aún así debería morir y dejar paso a sus sucesores...
#59 No hay sucesor para C, y por favor no me digas Java, que me pego un tiro. xD
C es dios, C++ es su hijo legítimo directo todo lo que vino después relacionado con clases, objetos y demás parafernalia son sus nietos. Y es cierto que C tuvo "hermanos", pero no tuvieron tanta suerte.
#73 El lenguaje C, su sintaxis y su léxico (palabras reservadas) es un standard regulado por ANSI. Es como la lengua española, que el conocimiento de la misma es de dominio público y gratuito pero luego la regula la RAE. Un lenguaje en un concepto abstracto, no se puede cobrar por él. Otra cosa es la documentación, ciertas librerías o herramientas para programar con él, pero en el caso de C no hay problema, se puede programar en C sin pagar un duro.

Una vez que conoces el lenguaje, debes…   » ver todo el comentario
Que recuerdos de la universidad cuando programabas en C en VI y como buen mal programador que se respete metías un ' } ' de mas a ver donde diablos no habías cerrado el código. :troll:
Vaya por delante que no sé nada de programación pero me gustaría iniciarme...¿algún lenguaje sencillo, con tutoriales, con ejemplos didácticos y accesible? ¿qué aconsejáis? Gracias
#31 Pseudocódigo, jaja.
#33 #31 que empiece con el código wiki, y luego que se pase a bash... :-D
#39 ¿Algún problema con Bash?
No me no me no me ... que me conozco (es coña). xD xD
#31 No es coña... RUST
Dale un tiento.
#31 Yo estoy bastante pez en el tema,tal vez por eso espero que mi consejo te pueda ayudar. Aprender a programar, así, por las buenas sin buscarle un sentido práctico no sé si tiene mucha salida. En ese sentido te aconsejaría python. Es muy claro y muy cómodo a la hora de instanciar objetos "cotidianos", como una lista.
Pero buscando un sentido práctico, te aconsejaría que le echaras un ojo al tema Arduino, que son unos procesadores chiquititos y baratos, preparados con usb (el esp32…   » ver todo el comentario
#31 Puedes aprender con cualquier lenguaje aunque según matices los puede haber mejores y peores.

Para aprender y tener una buena base yo también te recomendaría pseudocódigo (en papel) y C. Con C puedes aprender las estructuras de control típicas de la programación estructurada e implementar algoritmos clásicos y a parte entenderás y verás más allá que si empiezas con un lenguaje de más alto nivel, por ejemplo como se gestiona la memoria o hacer llamadas al sistema. Es poco abstracto y…   » ver todo el comentario
#72 Es que no se no por dónde empezar... C es gratuito? Dónde lo consigo?

Tengo 40 tacos. Aún recuerdo mi ordenador con cassette y luego el de disco de 5 y cuarto. Ahí tenía el lenguaje basic. Había revistas que te enseñaban y que tenían mil ejemplos de programillas. Copiabas 500 líneas (a mano), y tenías un juego chungo, pero juego. Y aprendias.

Eso es lo que hecho de menos hoy. Ejemplos y ejemplos para copiar y aprender, pero que veas resultados "chulos" más allá de Hello world

Por cierto, de esa etapa no me acuerdo casi nada del basic... GOTO 2019 :-)

menéame