University enseña C ++ estilo DOS, cómo lidiar con eso [cerrado]

19

Había estado programando durante muchos años, pero quería un diploma para poder ser más empleable. Después de haber pasado por la universidad una vez, no elegí un curso completo de 5 años en ciencias de la computación, sino un programa más corto, más orientado a la práctica, ingeniería de software .

Esperaba que pudiera centrarse más en habilidades concretas que en teoría, pero aún tenía esta idea de que a las universidades y los profesores les gusta que las cosas sean correctas, formales, académicas. Sigue siendo ciencia, ¿verdad? Incorrecto: me sorprendió la cantidad de cursos de TI descuidados.

En un curso de introducción a C ++, nos pusieron a prueba en clichés como "por qué los globales son malos" y "por qué son buenas las constantes", después de solo escribir 1-2 programas. Anécdotas al azar sin contexto adecuado. Los folletos contenían system(pause/cls) , getch y encabezados como conio.h y iodos.h . Una de las tareas fue imprimir "caracteres ASCII" de 32 a 255 , con una captura de pantalla que muestra dicha tabla impresa con la página de códigos Windows-1252, pero sin mencionar la codificación.

Pregunta : cuando una universidad / profesor parece estar utilizando herramientas y métodos inferiores y / o obsoletos, y el contenido que se está enseñando es incorrecto, ¿cómo lo maneja de manera constructiva y respetuosa, si en absoluto?

Algunas respuestas indican que debe mirar más allá de la programación, ya que es solo una herramienta para aprender sobre temas como las estructuras de datos y los algoritmos. Estoy de acuerdo con esta idea, pero en este caso realmente no había ningún plan detrás del estilo pobre. La mayoría de los cursos simplemente enseñan otra "herramienta" sin mucha teoría de fondo o cualquier "panorama general". A menudo se sentía como si se hubieran armado rápidamente solo por ofrecer ese curso.

Me quedé con él y finalmente me gradué. La calidad se mantuvo bastante baja (con algunas grandes excepciones), y varios otros estudiantes se han quejado al respecto. Como era de esperar, he aprendido mucho más de proyectos personales y trabajos de medio tiempo que de la escuela, sin embargo ¡el proceso de terminar la escuela y la etiqueta "estudiante de software" parecen misteriosamente útiles en sí mismos!

    
pregunta Toerndev 03.11.2011 - 09:47

14 respuestas

33

Las matemáticas y la programación son cosas totalmente diferentes. La matemática es ciencia, la programación es técnica. En el mundo académico, la programación es algo que debes saber para poder lidiar con las cosas reales, la que es realmente interesante y relevante: los algoritmos.

¿A quién le importa si el compilador es antiguo y usas system calls? ¿A quién le importa si tienes Linux y no Windows? Bueno, los profesores no, eso es seguro. Y no deberían, de verdad. No esperes convertirte en un programador profesional de cursos en la institución académica. Eso no es para lo que vas allí.

Es cierto que el compilador que espera que uses es antiguo, y la suposición sobre el sistema operativo es anacrónica y problemática. Puedes subirlo, y tal vez será tratado. Pero no porque el curso sea incompatible con la industria, sino porque causa una dificultad inmediata a los estudiantes. Ve a buscar ese compilador viejo ahora y haz que se ejecute en tu MacBook ...

En general, los estudios académicos no deberían desperdiciarse en el aprendizaje de C ++ y Android, debería estar aprendiendo las cosas reales de Informática allí. No tendrás otra oportunidad para eso. ¿Androide? Descarga Eclipse con el ADT y comienza a trabajar en él en casa, como hago yo. No necesito escuela para eso.

Creo que no está bien esperar que las universidades desarrollen la técnica. Especialmente no las universidades de investigación. Se puede decir que un lugar que solo ofrece títulos de licenciatura debería estar más orientado a la industria, pero las universidades de investigación quieren investigadores. Los profesores están buscando posibles estudiantes graduados y candidatos de doctorado, no excelentes programadores. Así que creo que deberías establecer tu nivel de expectativas en consecuencia.

    
respondido por el littleadv 03.11.2011 - 10:11
19

La informática es programar lo que la física es para la carpintería.

Si quieres convertirte en carpintero, estudiar física no va a hacer que suceda. Le enseñará muchas cosas interesantes que podría aplicar a su trabajo, pero no le enseñará cómo ser un buen carpintero. Para eso, tendrás que aprender el oficio de la carpintería.

Del mismo modo, si desea convertirse en un buen programador, tendrá que aprender el oficio de programación . Desafortunadamente, no hay ninguna institución para emitir certificación de ningún tipo. Básicamente, esto es algo que tendrá que hacer por su cuenta, ayudando a las personas que pueda encontrar. Para ti esto significa repetición y reflexión. Escribe un montón de código y luego vuelve a verlo. También tome tiempo para leer el código de otras personas. Considera la posibilidad de participar en proyectos de código abierto.

A las universidades no les interesa mucho la programación y menos aún los detalles que cambiarán en los próximos años. Lo que ves en tu escuela es que han elegido algún entorno de programación (uno malo, pero eso no es tan importante) y ahora te lo muestran, para que tengan un marco de referencia en el que puedan enseñarte varias técnicas de programación. Se puede argumentar que el marco de referencia es deficiente y que incluso el lenguaje es una elección extraña. Desde su perspectiva, probablemente no importa, porque se elige arbitrariamente.

    
respondido por el back2dos 03.11.2011 - 10:44
9

No hay nada de malo en aprender 'estilo DOS'. Estoy seguro de que muchos de los veteranos de aquí empezaron en DOS, o incluso con sistemas operativos anteriores, escribieron programas basados en líneas y se ajustaron bien. El mundo de la informática cambia tan rápidamente que no me quedaría atascado en detalles como qué biblioteca se usó para qué.

En realidad, sospecho que la razón por la que tenemos un mundo lleno de programadores que te pueden decir qué es inyección de dependencia , pero lucha por responder a FizzBuzz , es porque muchos Los programadores no pasan mucho tiempo en ese nivel muy básico.

Parece que esta es una introducción a la programación, así que, de manera esencial, no te preocupes por eso. Aprende lo básico y lo harás bien. Si estás interesado en otras plataformas, explóralas por tu cuenta. Eso es lo mejor de la programación.

    
respondido por el GrandmasterB 03.11.2011 - 19:30
5

¿Cómo puedes lidiar con eso? Descargue libros electrónicos de programación o videos en streaming, pruebe los ejemplos usted mismo. No dependa de sus profesores. La programación es altamente aprendida por tu cuenta.

    
respondido por el LEM Adane 03.11.2011 - 11:48
4

Muchas universidades tienen profesores de programación de mierda. Fui a una de las mejores escuelas de posgrado en mi país y aprendí bastante de cuclillas en programación. Creo que la mayoría de los unis son así porque los programadores realmente buenos optan por trabajos mejor pagados (no por la enseñanza). Debes tomar un pequeño proyecto e intentar codificarlo tú mismo. Puedes obtener consejos de muchos foros como este. Esa podría ser una mejor manera de aprender a largo plazo.

    
respondido por el Jan S 03.11.2011 - 10:11
3

Creo que la Universidad debería enseñar conceptos abstractos de lenguajes de programación, algoritmos, etc. y no debería ser el lugar donde aprendes a programar: la programación es una actividad muy práctica y solo puedes aprenderla haciendo.

Durante mi estudio aprendí lo básico de la programación en Pascal, luego tuve un proyecto en C (tuvimos que aprender el lenguaje por nosotros mismos) y luego tuve un curso sobre conceptos del lenguaje de programación (procedimental, orientado a objetos, funcional , lógica). En el folklore, en MSDOS tienes conio.h o punteros lejanos, que no tienes en un sistema UNIX. Esto era lo que los estudiantes discutíamos sobre una cerveza, no era algo que discutieras durante las clases porque no era tan importante. La enseñanza universitaria se centra en el resumen, el conocimiento general y evita entrar en los detalles: ejemplos y detalles se presentan solo para ilustrar el contenido general.

El ejemplo que dio sobre ASCII frente a Unicode y la biblioteca MSDOS conio.h significa que cada entorno de programación tiene su forma particular de hacer y organizar cosas. Si programa en C ++ en Visual Studio, tendrá que usar otras bibliotecas, algunas de las cuales no se encuentran, por ejemplo, en Linux. Entonces, si el curso estuviera en Windows 7 / Visual Studio, algunas personas podrían quejarse de que sería mejor hacerlo en Linux / GCC. Pero, OMI, este no es el punto.

Entonces, creo que deberías tratar de no distraerte con los detalles y concentrarte en los conceptos generales que abarca el curso. Por ejemplo, en la mayoría de los lenguajes de programación necesitará una biblioteca para implementar la E / S de la consola y, dado un entorno de programación, tendrá que resolver su problema con las herramientas que tiene a mano. Quizás esto le suene bastante obvio y tenga la impresión de que realmente no está aprendiendo algo porque ya tiene conocimientos previos (esto puede suceder), pero no tuve la impresión de que esté asistiendo a un curso incorrecto.

    
respondido por el Giorgio 03.11.2011 - 23:54
2

Las universidades están dando las bases. Una vez que sea fuerte, puedes construir rascacielos encima. He aprendido BASIC, C y C ++ durante mis días de universidad. Más tarde, cuando hice un proyecto en Visual C ++, creí que era un mundo completamente diferente. Más tarde me di cuenta de la diferencia entre Framework y Languages.

Elija una universidad adecuada donde ofrezcan el desarrollo enfocado de su campo de computación deseado. Lo que puede ayudarte más adelante en tu carrera.

    
respondido por el sarat 03.11.2011 - 10:04
2

¡Las impresiones llenas de system(""); son en realidad algo muy bueno! Me sorprende que la gente no sepa nada sobre estas funciones en la actualidad.

system("pause") , y elimina todos los errores de las funciones getX. system("cls") , y acaba de guardar una página de código. system("mkdir foo") y acaba de guardar 2 páginas de asignaciones de búfer, splits de ruta, _makepath_ss, 256 límites de ruta, tonelada de salidas de error, etc.

Además, el código es tan simple que un mono lo entenderá.

 if(!system("mkdir foo"))
     //booo and exit'

La escuela de perversiones polimórficas es lo que debería prohibirse por ley.

PD: Además, con el debido respeto, estoy teniendo dificultades para aceptar que a las personas se les enseñe C ++ con excepciones y todo como una BUENA COSA, porque tiene más trampas y minas terrestres de lo que puedes imaginar, e incluso Bjarne Stroustrup Evangeliza las excepciones como algo super fácil y seguro, mientras que en realidad son una mina nuclear.

Ver análisis sobre Misra-C ++ y JSF-C ++. Y enlace . Soy demasiado perezoso para encontrar todos los artículos restantes de hoy.

Con todo lo que se dice, soy desarrollador de c ++ y disfruto de muchas características y del lenguaje en su conjunto.

    
respondido por el Coder 03.11.2011 - 20:29
1

Mi sugerencia puede sonar, pero escúchame ... Cambia de carrera.

En mi experiencia en el mundo académico, la especialidad en Ciencias de la Computación fue una mirada de muy bajo nivel a lo que hace funcionar a las computadoras. Comenzó con un cebador básico en C ++ para asegurarse de que sabía qué era un programa, y los conceptos básicos de la memoria y el cómputo detrás del programa, y luego aprendió ensamblaje, conceptos de SO, ingeniería eléctrica, diseño digital, etc. este grado y busca trabajo con NVidia o AMD, o Lockheed; en algún lugar donde están creando un nuevo hardware, que necesita alguien que pueda entender ese hardware en un nivel lo suficientemente bajo como para escribir los controladores y el software de control.

Parece que lo que quieres es un curso de estudio que, en mi universidad, se llamaba Gestión de Sistemas de Información. Ese es el curso que seguí; enseñó programación en Java, VB.NET, C #, y algunas secuencias de comandos PHP y otras web a lo largo del camino. También requería cálculo (pero no en la misma medida que CS), contabilidad, finanzas, estadísticas, comunicación comercial, O-O A & D, diseño de bases de datos y análisis de sistemas. Obtuve un BBA en lugar de un BS, y tuve las herramientas básicas para comenzar a trabajar como desarrollador de software para Windows o Web.

Para qué te prepara la especialización en "Ciencias de la computación" depende en gran medida de qué universidad la ofrece. Suena como si estuvieras en un camino temprano para obtener una visión muy anacrónica y de bajo nivel de las computadoras que no suena como lo que buscas después de tu educación. Les insto a que busquen en la universidad y encuentren un curso de estudio que se centre más en el tipo de trabajo con la computadora en el que querrá trabajar después de la escuela.

Pase lo que pase, su curso de estudio comenzará en un programa muy básico de "nivel de consola". El idioma no importa; Lo que te están enseñando es la programación procesal básica; cómo pensar en pasos lo suficientemente pequeños como para que la computadora pueda seguirlo paso a paso (porque la computadora no da nada por sentado y no puede seguir la mayoría de los saltos en la lógica de un humano). A partir de ahí, avanzará a la programación orientada a objetos (en lugar de tener una función larga que hace todo, es mucho más fácil mantener varios "objetos" de código más pequeños, que representan el estado y la lógica de los objetos del mundo real), y luego a programación controlada por eventos ("No nos llame, lo llamaremos"; su programa se inicia básicamente, le dice al sistema operativo que configure su IU gráfica inicial y luego se sienta y espera que el sistema operativo pase la entrada del usuario a través de un bucle de mensajes), etc. etc.

    
respondido por el KeithS 03.11.2011 - 15:05
1

Los cursos de Ciencias de la Computación no te enseñarán programación. Este es un paseo por el parque en comparación con la programación que he realizado en mi curso de CS.

El problema fundamental con esto, según mi experiencia, es que no hay prácticamente ningún lugar donde le le enseñe a programar a un nivel equivalente, por lo que no tiene otra opción.

    
respondido por el DeadMG 03.11.2011 - 21:00
0

Creo que puede haber cierta confusión sobre qué y por qué estás estudiando.

Parece como si estuvieras estudiando un programa introductorio de informática. Está dirigido a personas con poca experiencia que están aprendiendo lo básico sobre cómo funcionan las computadoras en un nivel bajo.

También parece que eres un programador semi-serio o profesional. Llevas 10 años programando y te sientes cómodo en 3 idiomas. Parece que sabes lo que estás haciendo al menos lo suficiente para trabajar como parte de un equipo. ¿Te sientes fuera de lugar en este curso? ¿Los otros estudiantes tienen un nivel de experiencia o habilidad similar al tuyo?

¿Qué piensas sacar de este curso?

¿Estás justo detrás de ese 'trozo de papel'? Si este es el caso, no dejes de intentar conseguir un trabajo mientras estudias. Solicite trabajos, dígales que usted es un programador competente y que está estudiando porque necesita el papel para obtener un trabajo. Si lo contratan, entonces considere abandonar el trabajo: una vez que tenga un trabajo profesional, ya no necesitará ese papel. Acepte un salario inferior al normal, porque es mejor que se le pague por aprender (en el trabajo) que pagar por aprender en la escuela, y usted también aprenderá más rápido . Después de un año o dos estará casi al día, y luego podrá solicitar un aumento salarial decente o buscar otro trabajo porque tendrá experiencia.

¿O estás tratando de aprender algo? Entonces deja de juzgar a tu profesor. Como un maestro de escuela secundaria memorable, solía decir: "Siéntate, y cállate". Es casi seguro que el profesor tiene una experiencia y un conocimiento inmensurables más que usted y podría aprender mucho de él. Si va demasiado lento para usted, intente obtener crédito por estos cursos introductorios basados en su experiencia y aprendizaje previo.

¿Pero estás en el curso correcto? También puede aprender mucho del profesor de literatura o del profesor de historia ... no es particularmente relevante. Tal vez usted no quiera "ciencias de la computación", sino que desee habilidades más prácticas y "del mundo real". Probar 'ingeniería de software'. Busque en otras instituciones un curso más específico.

Al igual que cuando empiezas un nuevo trabajo, una clase o curso de estudio puede ser muy difícil de revisar desde afuera. Parece que estás en un curso que no te da lo que esperas. Reconsidere sus opciones.

    
respondido por el Kirk Broadhurst 07.11.2011 - 00:38
0

Pensé que muchas de las respuestas a esta pregunta fueron decepcionantes. Volvieron a la vieja y cansada discusión sobre CS vs Programación, etc. Eso puede ser así, pero me parece que el curso en el que se lleva a cabo la OP no es una enseñanza tampoco.

Estaba en la situación de haber trabajado ya como programador, y estudié bastante solo antes de estudiar CS a tiempo parcial en la universidad. Hice compras cuidadosamente, pero en general encontré que el plan de estudios era una pérdida de tiempo. Además, no me dejaron saltar cursos a pesar de tener experiencia profesional en el área.

En mi experiencia, una proporción significativa de los profesores es bastante perezosa y utiliza un plan de estudios obsoleto. Sinceramente, parece que estás perdiendo el tiempo. Cuestiono incluso si completar el diploma te ayudará a encontrar un trabajo.

Dudo que puedas hacer mucho para cambiar las cosas de tu curso. Puedes complementarlo con el estudio por ti mismo. O simplemente olvídese de todo, estudie CS de manera independiente y haga algunas certificaciones de la industria también.

Debo agregar que no tengo idea sobre el valor del diploma en el mercado laboral de su país. Si el diploma en sí es valioso a pesar del contenido, es posible que tenga que soportar un plan de estudios que de alguna manera le falta.

    
respondido por el Antonio2011a 07.11.2011 - 01:33
0

Tienen que atender a los estudiantes. La mayoría de los estudiantes no pueden programar. Así que no están obligados a ser técnicos allí.

También tienen sus propias áreas especializadas de investigación, pero no están enseñando eso. Y de todos modos, muchos investigadores no son buenos maestros de todos modos, ¡así que puedes considerarte afortunado si están enseñando cosas que ya sabes!

De todos modos, parece que no sabes qué es la informática. No se trata de lo que es práctico para la industria.

    
respondido por el barlop 18.11.2011 - 03:35
-6

Le pediría (y luego insistiré) que devuelva sus tareas en el estándar c ++. Esto es completamente razonable, ya que de lo contrario no podrá completar las tareas.

En cuanto al mal estilo; inevitablemente habrá algo de esto para empezar. Aprender a usar la biblioteca estándar de io correctamente requiere algunas características avanzadas de c ++, en particular plantillas e iteradores. Puedo ver por qué un profesor le haría usar funciones de io muy simples para empezar. Sin embargo, no tendría miedo de preguntar sobre esto, muestra entusiasmo y un poco de luz en tus ojos. Su profesor debería poder tejer su pregunta en una conferencia futura en la que (con suerte) ponga en orden sus primeros ejercicios.

Sin embargo, lo dejaría así. Aunque c ++ puede ser un lenguaje independiente de la plataforma, con frecuencia no lo es. Aprender algunas funciones del sistema de Windows no es algo malo, especialmente si luego se entrena para hacerlo según el estándar. En algún momento se encontrará con conio.h cuando mire el código de otras personas, y es bueno saber qué hace.

    
respondido por el Tom 03.11.2011 - 10:13

Lea otras preguntas en las etiquetas