Principios de Programación

eisenfaust

#19 Lo único que enseña Pascal es a programar como un mono y a jugar con uno de los sistemas tipados más limitados que existen.

¿Y qué habitos son esos de los que hablas? ¿Y qué características? (Lo siento, lo de su sistema tipado no cuela, que ya no vivimos en los 70). Porque yo no me creo absolutamente nada de un lenguaje en el que para considerarte proficiente tienes que ingeniartelas para estar continuamente engañándole y jugando en su contra.

Ahora dime alguna universidad top que use Pascal en su curso de iniciación. Si es que es de los pocos lenguajes que es patético tanto en el ámbito académico como en el profesional.

1 respuesta
skv

#31 Universidad Autónoma de Madrid. Estamos hablando de resolver problemas simples en un curso de iniciación, del tipo resolver una ecuación de segundo grado. Ni siquiera se llegan a usar punteros, es para aprender a pensar como un programador y enseñar las estructuras básicas (if, for, while). En C puedes equivocarte muy fácilmente si eres novato, puesto que el compilador no se queja por nada. Puedes hacer casi cualquier cosa, utilizar chars como integers, acceder a posiciones de memoria no reservadas y muchísimos ejemplos más. Y, cuando el compilador se queja, el 90% de las veces son errores crípticos que nadie sabe descifrar. Pascal, precisamente por estar tan limitado, lanza errores muy descriptivos por casi cualquier cosa que no sea considerada estándar.

Así podría seguir hasta el infinito. En Pascal, por poner ejemplos más concretos, tienes el array y el boolean como tipos básicos de datos. En C, en cambio, no hay boolean, y aunque a ti te puede parecer una chorrada la forma de evaluar true o false en C ponte a explicarselo a un tio que ni sabe hacer un bucle. Y es que el principal problema de C es que te encuentras con punteros casi desde el principio, para hacer las cosas más básicas. Sin ir más lejos un scanf ya involucra el operador &. Lo mismo con los arrays, y un largo etc de cosas.

2 respuestas
JuAn4k4

#32 Yo considero C muy apropiado, porque así te enteras de como funciona..
Si alguien no entiende lo que es una condición booleana, es para canearlo.

eisenfaust

#32 El compilador evita fallos en run time, vale, bien, como en otros tantos miles de lenguajes. Lo que pareces olvidar es que Pascal va a estar petando más tiempo que el usuario aprendiendo. Bastante tiene el que empieza con aprender fundamentos para encima preocuparse de si un string es de 12 ó 13 caracteres.

El lenguaje con el que iniciarse ha de ser sencillo, multiparadigma, dinámico (con tipación opcional) y con la sintaxis más simple posible. Hay porrones de estudios serios (el más famoso el de HtDP criticando la metodología de SICP) que lo demuestran y eso se ve reflejado en que las mejores universidades del mundo en cuanto a CS (entre las cuales no está la Complutense, lo siento) dan sus cursos de iniciación en lenguajes como Scheme, Python y Oz.

1 respuesta
Gusete

Links para completar #34
el estudio: http://www.ccs.neu.edu/scheme/pubs/jfp2004-fffk.pdf
el libro: http://mitpress.mit.edu/sicp/full-text/book/book.html

B

Para aprender a programar lo mejor es Visual Basic

Nota: Por si algun despistado viene, va de coña.

txandy

A mi en el grado superior me enseñaron PASCAL, y es lo que dice un usuario de arriba, es una puta mierda, pero es sencillo y errores claros, aprendes hacer 4 cosas, bucles, if, else, ficheros y 4 cosas básicas más para tener nociones de programación y a intentar plantear las cosas como un programador.

Que es el mejor lenguaje para aprender? Pues seguramente no, yo iba ya con la base de PHP y tenia las nociones básicas de if,else, bucles, etc y lo veía una putisima mierda.

1 respuesta
BLZKZ

#37 stack overflows por doquier, no recomendaría pascal a nadie xD

1 respuesta
txandy

#38 a nosotros nos lo vendieron así, que era sencillo, que al compilar los errores eran claros, etc etc

Casi toda la clase dijo que mejor C, o Java algo más usable en la vida real, pero nada que pascal, desde que terminé no lo he vuelto a usar...

1 respuesta
BLZKZ

#39 a mi también me lo vendieron así, pero tengo mi propio criterio y no me creo todo lo que me dicen xD

B

#18 Con Python puedes aprender todo, al menos programación estructurada y programación a objetos. Luego se puede bajar a C comprendiendo como se trabaja con posiciones de memoria y todo eso para, por ultimo, si es preciso dar el paso a ensamblador.

1 respuesta
MacSpawn

#41 agree

Achiss

Yo fuera de la carrera aprendí con python y me parece una buena opción para empezar y ver resultados, puedes pillar pygame y en un par de semanas ver muñecos moviéndose por la pantalla y demás en vez de no salir de la consola. Creo que es una buena forma de no desanimarse al principio.

En la carrera, pues en primero C y ensamblador, me parece una buena forma de empezar en una ing.informática que el objetivo es conocer como funciona por dentro y no sólo a utilizarlo, pero para otras carreras python o java puede ser mejor opción imagino.

DaVNiz

Ya que esta este hilo abierto aprovechare para haceros una pregunta...

En C (si, acabo de empezar), tengo un bucle do-while. El caso es que en do solo pongo un printf y en el while, pongo la condicion que ha de pasar para que no hayabucle, hasta aqui todo bien pero cuando pruebo el programa y no cumple la condicion se me queda todo el rato repitiendo el mensaje que puse en el printf del do, como hago para que solo salga una vez ese mensaje y no se quede repitiendo?

Gracias.

#45 #46
en while pongo (numero!=0), porque al teclear 0, el programa termine y eso me funciona, pero si escribe 1, se me repite el mensaje que puse en el printf.

Que va, si pongo (numero==0) los numeros del 1 al 9 me van, pero en el 0 se me repite el mensaje, vamos al reves de lo que yo quiero xD.

2 respuestas
0buS

El primer año darás C, con lo cual empieza con C. En segundo ya tendrás algo de C++ y Java, para el tema de orientación a objetos. Pero yo te recomendaría comenzar con C.

#44 será que siempre se está cumpliendo la condición. Si posteas el código... xD

#44 Claro que se repite, 1!=0, con lo cual es true.

Creo que tu duda es como se evalua un while en la sentencia do-while.

1 respuesta
Meleagant

Me encantan los hilos informáticos donde alguien pregunta una duda y el resto se dedican a competir a ver quién la tiene más larga (la experiencia informática).

#44

La condición se está cumpliendo. Si no se cumpliese, saldría, no hay más.

#44

Mandame el código por MP, que te echo un cable.

1 respuesta
B

no hace falta que pongas el codigo.
El programa lee el numero (1 por ejemplo) y la condicion se cumple siempre,1 diferente de 0, si quieres salir del bucle pon despues del print,numero = 0; para que al intentar entrar en el bucle compruebe que numero(0) = 0 entonces no entrara.

Esto con pascal no te pasaria xD

Lo importante de aprender a programar no es el lenguaje que utilices para empezar son los conceptos. Una vez entindas el concepto lo implementas con el lenguaje que quieras pascal, java, c,etc. A nosotros nos explicaban las cosas utilizando diagramas de flujos y cuando nos decian teneis que hacer tal primero haciamos un diagrama de flujo para ver que debiamos hacer (solo al principio, pero la verdad esque ves las cosas claras y te evitas ciertos errores)

G

Q-Basic > all, sabe dios xD

Ulmo

Yo creo q lo mejor es empezar por C++, C a secas se hace un poco duro al principio y C++ te ahorra muchos lios q para nociones básicas realmente poco importa.

Eso sí, ponerse a aconsejar python y cosas asi para iniciarse en la programación es un suicidio, sin dimensionar variables, controlando tabulaciones, etc. Es directamente un suicidio empezar a programar por ahi.

1 respuesta
eisenfaust

#49 ¿Pero verdad lo dices en serio? ¿Consideras que es más fácil programar en C++ que en Python o simplemente opìnas que promueve malos hábitos?

1 respuesta
Ulmo

#50 Mas facil q en python conozco muy pocos lenguajes, quizas Perl, pero vamos, me parece un malisimo lenguaje para iniciarse en la programacion.

Un lenguaje en el q no declaras variables, no las dimensionas, acepta expresiones regulares en las q muchas veces es dificil predecir el resultado, nunca se queja aceptando practicamente cualquier tipo de operacion sobre cualquier tipo de variable, etc....

Vamos, yo lo uso habitualmente pero eso no quita q como lenguaje docente me parezca dantesco xDDD

1 respuesta
eisenfaust

#51 "Un lenguaje en el q no declaras variables, no las dimensionas, acepta expresiones regulares en las q muchas veces es dificil predecir el resultado, nunca se queja aceptando practicamente cualquier tipo de operacion sobre cualquier tipo de variable, etc...."

Hombre, para mí eso son features. Claro que mi lenguaje favorito es Perl así que imaginate xD

De todas formas siempre se han usado lenguajes dinámicos con mucho éxito en la docencia. Mismamente MIT y Stanford hacen uso muy intensivo de Python en sus cursos de iniciación.

VeL3FoR

Ahora se programa con Java, no con C++ ni con c.

2 respuestas
BLZKZ

#53 java es basura en optimización. Para usos criticos c++ es lo que hay (o c, según)

2 respuestas
Ulmo

#54 Q va!! q tienen el garbaje collector :O

El problema q le veo a Java es q es demasiado alto nivel, abusa excesivamente de las clases y para empezar lo único q provoca es un lio de cuidado, con C o C++ puedes empezar a programar sin molestarte por clases y luego ya irlas introduciendo poco a poco.

#54 Siempre me ha hecho gracia eso de q Java "es una basura en optimizacion", cuando posiblemente el 98% de las veces q la optimización es mala no es por el compilador sino por el propio código del programa.

2 respuestas
Ronso

#25 Yo con Bolonia empecé directamente con C++ y antes se daba PASCAL. Según se hizo por consenso de profesores o no se, para tocar el tema de objetos directamente con C++.

#55 No soy experto en esto, pero para mí que java consume demasiado... si no preguntale al jdownloader xD

BLZKZ

#55 Por muy optimo que sea un programa, ese mismo podrá ser mucho más optimo en c++. De hecho java nunca se usa para tareas criticas, y no hablo de programación amateur de un tio que hace un gestor de biblioteca.

1 respuesta
eisenfaust

Java lento xDDD

Vale que el lenguaje sea una puta mierda pero ha tenido a auténticos magos de la optimización dándole caña durante años y la JVM es una de las grandes piezas del software de hoy en día.

Y sí, vale, C es más rápido que blub. Nada nuevo bajo el sol.

1 respuesta
GamA

#58, #57 tiene razón. Java no puede competir con C/C++ en procesos que requieran alta velocidad.

Todavía recuerdo hace 2 años que hice un rebentador de contraseñas hasheadas en SHA1 mediante fuerza bruta. Lo hice en java y luego en C con el código lo más parecido posible. El de java tardaba 4 segundos donde el de C tardaba 4 décimas. Esto puede parecer una chorrada, pero hay que pensar que, por ejemplo, en este caso el crecimiento no es lineal ya que si la cadena tenía 4 caracteres y tardaba 4 segundos en java, con 5 caracteres igual tardaba 30 segundos y con 6 3 minutos. Esto podía suponer que en C tardase 30 segundos aproximadamente. Cuando avanzas a 8, 9 o 10 caracteres ves como te ahorras dias, semanas o incluso meses de procesamiento.

Java es muy bueno, nadie lo niega, pero cada lenguaje tiene su parcela y java por desgracia la parcela de la eficiencia máxima no la ocupa. Y te lo digo yo, que me encanta java, pero hombre... hay que darse cuenta de las limitaciones de cada cosa.

1 1 respuesta
eisenfaust

#59 A mi no me tienes que decir nada porque ni he dicho que pueda competir con C++, ni mucho menos que sea bueno o me guste. Porque personalmente no existe ningún lenguaje al que le tenga más asco.

Simplemente he dicho que Java no es lento. Para nada. Sería como decir que Ocaml es lento porque no es tan rápido como C.

Es que si nos ponemos así desterramos el 95% de los lenguajes que existen y nos limitamos a hacer el capullo en ensamblador.

1 respuesta