Principios de Programación

HoTiTo

No sé si se habrá dicho, pero considero una locura empezar con C. Es lo que siempre decimos "joder, ojalá hubiera empezado con C bla bla bla bla".

C como lenguaje es una odisea. Hay lenguajes mucho más asequibles y preparados para el aprendizaje como Modula o incluso Ada, que te canta todo rápidamente. O ni siquiera eso, puro pseudolenguaje sirve.

En mi caso, fue Ada + ensamblador el primer año, C y C++ el segundo, y el tercero ya vino el despipote con Java, Fortran, Pascal, y mierdas similares.

Reth

#53 Je. Según en qué campos, en bajo nivel olvídate de cualquier cosa que no sea C/C++ o un derivado.

#1 Olvídate de este hilo, cada uno te va a dar su opinión condicionada a sus experiencias personales... Coge uno cualquiera de los más conocidos (más que nada porque así tendrás más documentación y sitios donde acudir) y puerta, que junto con lo que vayas aprendiendo en la carrera ten por seguro que no te atascarás xD

Kartalon

Desprestigiar C y su aprendizaje cuando sigue siendo el lenguaje de programación de sistemas más utilizado con diferencia me parece ridículo xD

(Para alguien que realmente quiera aprender a programar, claro, para alguien que quiera aprender cualquier lenguaje OO para salir del paso y pista, que ni toque C.)

VeL3FoR

#54 lo se, pero mira es la mierda que se da ahora yo emepece programando en el superior con c++ i ahora en la uni con java. :S

GamA

#60 Decir que java no es lento y luego decir que los hay más rápidos es decir que java no es rápido.

Es como decir que un renault megane a 200 km/h no es lento aunque haya bugattis que van a 400 km/h. Y esta comparación es bastante peor porque no todo el mundo puede tener un bugatti, mientras que si aprendes a programar en java puedes aprender C y viceversa (aunque uno sea más difícil de aprender que el otro).

Vamos que mientras tengas a mano mejores soluciones de velocidad, estarás usando el lenguaje equivocado de cara a la máxima productividad. Lo dije y lo volveré a repetir siempre, cada lenguaje tiene unos usos más específicos.

Estoy seguro de que empresas que necesiten una productividad extrema en su código no usan java. Por ejemplo, en clusters de cálculo. Yo sinceramente, si encuentro alguno con java creo que pediré la dimisión del directivo que lo ordenó o el ingeniero que le recomendó su uso.

Por cierto, dudo al 99.9999% que seas capaz de generar un código en ensamblador mejor optimizado que en C (Yo tampoco, y prácticamente nadie podría hacerlo). Principalmente por los optimizadores de código por los que pasa el C antes de convertirse a ensamblador. Por lo que no, el ensamblador no es una opción para competir con C :/

1 respuesta
eisenfaust

#65 "Decir que Java no es lento y luego decir que los hay más rápidos es decir que Java no es rápido".

Sin sentido, en serio. Debe faltar por ahí algún superlativo.

GamA

No veo donde te pierdes, igual así te gusta más:

Tu dices:

  • P (Los hay más rápidos)
  • Q (Java no es lento)

Y aplicando el sentido común si los hay más rápidos es porque java es lento:

  • P->Q

No llego a la cláusula vacia, por lo que el que dice cosas sin sentido (o lo que es lo mismo, sin que la lógica te apoye) eres tú eisenfaust. Corrígeme si me equivoco que primero se me quedó hace mucho tiempo atrás :D

eisenfaust

No, es lento comparado con C o aplicado a su dominio. Comparado con el resto de lenguajes, que es de lo que todos estamos hablando, es rápido.

C, C++, D, Java, C#, Common Lisp, Fortran, etc. Se pueden considerar lenguajes rápidos.

Perl, Python, IO, PHP, Smalltalk, Lua, Erlang, etc. Se consideran lenguajes lentos.

Esto es así, de toda la vida. Te pongas como te pongas y le des las vueltas que quieras.

Fortran puede ser más rápido que C. Eiffel y especialmente SmartEiffel también han llegado a ser más rápidos que C en algunos benchmarks y aplicaciones reales. Lo mismo se puede decir del compilador GHC de Haskell en algunas ocasiones. Decenas de lenguajes que llegaron antes que C son más rápidos. ¿Signifca esto que C es lento?

GamA

¿Son del orden aproximado de 10 veces más rápidos que C? Entonces podríamos decir que si.

¿Levemente más rápidos? Entonces no.

Evidentemente no es lo mismo decir que algo tarda 10 segundos u 11 con otro procedimiento y decir que el primero es lento. Sin embargo si decimos que algo tarda 10 segundos y 100 con otro procedimiento, está claro que el primero es lento. Y digo lo de la décima parte porque fue lo que yo obtuve personalmente en la aplicación que hice. Depende evidentemente de la aplicación que hagas, pero ser un 1000% más rápido que algo hace que ese algo sea lento.

Es como decir que los humanos no somos lentos porque existen tortugas, ratones, hormigas... también existen guepardos, tigres, pantelas,... somos lentos, aunque no los que más. Lo mismo pasa con Java, lo mires por donde lo mires.

Si encuentras un cluster que use Java para realizar cálculos matemáticos me retractaré de lo dicho, mientras tanto está claro que no se usa porque es lento.

Todo lenguaje interpretado es lento, de hecho su lentitud proviene de ahí.

LOc0

Salu2 ;)

HoTiTo

Java tiene su nicho, pero desde luego hay cosas en las que arrastra un rendimiento muy pobre comparado con otras soluciones escritas en otros lenguajes.

Y respecto a lo del ensamblador, es cierto que los compiladores han mejorado mucho, pero siguen sin ser comparables a un ser humano. Hay puestos de trabajo dedicados exclusivamente a optimizar el ensamblador generado por un compilador. Por lo que no, no es complicado mejorar el rendimiento del ensamblador generado por un compilador. Y con "no complicado" me refiero a alguien con una formación específica en arquitectura de computadores o similar.

Obviamente esto sólo se aplica a un ámbito muy concreto de aplicaciones, no a aplicaciones de gestión j3

skv

Vaya tonteria de discusión, básicamente estais hablando de la semántica de las palabras "lento" y "rápido". Poned links como el siguiente y fin de la discusión, todos somos capaces de entender números:

http://shootout.alioth.debian.org/u32/which-programming-languages-are-fastest.php

BLZKZ

decir que por regla general haskell es más rapido que c es una locura como un castillo de grande empezando por la definicion de un lenguaje funcional que admite listas infinitas y no controla una mierda, siguiendo porque el compilador es caca de la vaca para desayunar...

1 respuesta
eisenfaust

#73 Nadie ha dicho que por regla general es más rápido que C, sino que puede llegar a serlo. Especialmente si hablamos de multi-threading. Pero por regla general, no, no lo es. Menos cuando se programa de forma idiomática a alto nivel, y no todo el mundo puede escribir (o leer) Haskell a bajo nivel.

Tampoco sé de qué compilador hablas, porque tiene varios. Pero GHC en concreto es una maravilla de proyecto. Quizás de los más importantes que se hayan dedicado a un lenguaje en los últimos diez años. Así que haz un poquito de investigación antes de soltar tonterías.

En cuanto a que sea funcional o admita listas infinitas (o más bien el concepto de listas infinitas), tiene que ver -1 con el rendimiento de un lenguaje. Y eso de que no controla una mierda, si hablas de tipación es el lenguaje más estricto y a la vez avanzado que existe en ese sentido, si te refieres a otra cosa, será mejor que repases el concepto de laziness.

Vamos, que por como hablas me da que habrás dado Haskell en cuatro clases de Universidad de forma anecdótica, sin experiencia laboral o sin colaborar en ningún proyecto serio. Y algo me dice que no te salió muy bien el examen.

Comparar Haskell con C es como comparar a Dios con un gitano. Y lo sabes aunque te duela xD

1 respuesta
BLZKZ

#74 GHC es una maravilla, pero no tanto como GCC.

Lo mires por donde lo mires C le va a ganar la partida. Lo unico que me gusta de haskell es que es un lenguaje perezoso (no, no lo voy a repasar, se lo que es y me acuerdo de ello) pero eso para llegar a un problema con solución real no tiene consecuencias positivas con respecto a C, y no me refiero a tipación, me refiero a que entras en un bucle infinito con más facilidad que en cualquier lenguaje estructurado.

4 clases de forma anecdotica xDDDD sí xD. Lo odio y no precisamente por lo que se da en clase, que te lo pintan de puta madre hasta que luego por curiosidad te intentas meter mano xmonad y te da por culo bien dado.

1 respuesta
eisenfaust

#75 Pues si xmonad te da asco espérate a echarle el ojo al código de Darcs, porque eso sí que es una aberración xD

En cuanto a aplicaciones del mundo real, no para cualquier cosa (al final los lenguajes no son más que herramientas), pero por ejemplo en el mundo de las finanzas se usan mucho los lenguajes tipo ML (especialmente Ocaml), por encima de C. Y en mi opinión Haskell es mucho mejor que Ocaml. El problema es que los recursos salen extremadamente caros y no son fáciles de encontrar.

En fin, como parece que al final sí sabes del tema y los gustos no se discuten doy por zanjada la discusión. No sé cómo puedes odiarlo, pero sólo te animo a que lo retomes (si es que alguna vez lo has dejado) y le eches un vistazo a proyectos que merezcan la pena, como Snap o el propio GHC.

1 respuesta
BLZKZ

#76 cuando termine lo que tengo entre manos de android y web tengo pensado volver a mirar algún lenguaje funcional xD pero vamos a saber las ganas que me quedan. Realmente haskell me parecía cojonudo hasta que lo vi en aplicaciones reales asi que le sigo teniendo ganas desde lo lejos claro, lo mismo vuelvo y termino repudiandolo o amandolo xD

edit: #76 por cierto el proyecto del intérprete (GHCi era si no me equivoco) sigue desarrollandose?

eisenfaust

Mi consejo es, ya que programas en Android, tocas web y tienes algo de experiencia con Haskell, que le eches un ojo a Scala : )

edit: Sí.

Usuarios habituales