¿Es un error aprender C # como primer idioma? [cerrado]

26

Sé que hay preguntas similares aquí, que he leído, pero recientemente leí esta publicación de Joel Spolsky:

¿Cómo puedo enseñar a una persona brillante, sin experiencia en programación, cómo programar?

Y me hizo pensar en mi forma de aprender y si podría ser perjudicial a largo plazo.

He incursionado en varios lenguajes, pero C # es el primero en serio, he leído "Head First C #" y he creado algunos proyectos. Pero después de leer la publicación anterior, me resulta un poco desalentador que pueda estar haciendo todo mal, obviamente respeto la opinión de Joel, que es lo que me ha sorprendido un poco.

Empecé a leer "Código" como se recomienda en la lista de lectura y me parece bastante difícil, aunque agradable. Siento que se ha quitado el brillo de mi "pirateo novato" en Visual Studio.

¿Entonces ahora no estoy seguro de qué camino debo tomar? ¿Debería dar un paso atrás y seguir los consejos de Joel y comenzar a leer?

Supongo que mi objetivo principal es convertirme en un buen programador, como todos los demás, pero no quiero entrar en malas prácticas aprendiendo un lenguaje .NET cuando alguien cuya opinión respeto respeto piensa que es perjudicial.

Pensamientos?

JuniorDeveloper1208
fuente
44
Aprender CS de la manera difícil se puede hacer, pero solo si tienes un buen maestro.
Trabajo
55
C # no era mi primer idioma que era VB.net y puedo decirte que lo que importa no es cómo comienzas. Creo que C # será un excelente lenguaje inicial, solo recuerda preguntarte siempre por qué las cosas se hacen como están.
Daniel Little, el
23
No. Cualquier idioma como primer idioma es bueno para aprender la teoría de la informática. Por supuesto, para hacer carrera en él, algunos idiomas son mejores que otros, pero para fines de aprendizaje, todo es bueno. Algunos de los mejores programadores que conozco comenzaron con BASIC en un C64, Apple II o TI-99 / 4A. No les pudrió el cerebro, pero los instó a pasar al siguiente idioma y luego al siguiente.
Jesse C. Slicer
55
Además, depende de lo que planeas hacer con ese conocimiento. C # resuelve problemas de negocios día tras día donde trabajo. No he mirado C en casi 2 décadas y me siento asqueado cuando tengo que hacerlo.
Jesse C. Slicer
19
Aprender algo nunca es un error. Siempre es mucho mejor que no aprender .
SK-logic

Respuestas:

80

He tocado varios lenguajes, pero C # es el primero en serio, he leído "Head First C #" y he creado algunos proyectos. Pero después de leer la publicación anterior, me resulta un poco desalentador que pueda estar haciendo todo mal, obviamente respeto la opinión de Joel, que es lo que me ha sorprendido un poco.

También respeto las opiniones de Joel, pero son solo eso: opiniones . No hay absolutamente nada de malo en usar C # como lenguaje de inicio.

El mayor consejo que puedo darle, o cualquier persona que esté haciendo alguna programación (¡incluso si están comenzando en vainilla C!) Es no estar estancado y no ser religioso . No me importa con qué lenguaje de programación empiezas, ni qué tan puro o justo es ese lenguaje: en este día y edad no puedes permitirte sentarte solo en el mundo de la programación.

Por ejemplo, comencé a programar con PHP3 cuando era un adolescente. Construí algunas pequeñas aplicaciones web y algunos sitios web con él; Pensé que era un programador genio y que podía hacer cualquier cosa con PHP3, y fruncí el ceño a las personas que tenían que ver con ASP o BASIC. Chico, estaba equivocado.

No comencé a florecer verdaderamente como desarrollador hasta que comencé a expandir mis horizontes y a estudiar otros lenguajes y conceptos de programación. Durante la escuela secundaria aprendí algo de RealBASIC, y luego Visual Basic. Después de la escuela de negocios, cuando me convertí en desarrollador profesional, comencé a aprender C # y Javascript en serio.

Ahora, no me malinterpreten aquí - Estoy no defendiendo que intenta ser un rey de los tramposos. En el fondo, y en el comercio, sigo siendo un programador de PHP. PHP es mi pan de cada día, y lo sé por dentro y por fuera. Sin embargo, mis habilidades PHP no se convirtieron en lo que estaban haciendo PHP. Aquí hay algunos conceptos muy importantes que no entendí de PHP, a pesar de trabajar profesionalmente.

  • Javascript: cierres
  • jQuery (sí, separado): el DOM y Ajax
  • Visual Basic: programación orientada a objetos
  • C #: genéricos y cierres
  • Ruby (on Rails): el poder del diseño MVC

Podría seguir, y también muchos otros en este sitio, durante días. Aunque soy un programador de PHP, pude traer todos estos otros maravillosos conceptos al trabajo que hago todos los días.

¿Cuál es mi punto? Aprende C #. Conviértete en un maestro de C #: tendrás una carrera larga y exitosa y probablemente lograrás algunas cosas increíbles. Pero no se encasille. Viaje y pruebe otros lenguajes, entornos y conceptos.

Ortigas Jarrod
fuente
+1: @toleero - C # o Java está perfectamente bien para comenzar a aprender. Joel y Paul Graham, superando a los promedios , intentaban llegar al punto en que los desarrolladores se estancaban con los idiomas elegidos, como se señaló, esto es demasiado común.
Justin Shield
Objective-C también enseña MVC, por cierto, pero está menos convencionalizado.
Moshe
44
+1. En mi opinión, no puedes ser un gran desarrollador y un maestro de tu idioma principal, sin haber aprendido y jugado con otros idiomas. Esa es la mejor manera de expandir su conocimiento y apreciar realmente los aspectos fuertes de su idioma principal.
Niklas H
3
+1. La clave de esto son las palabras que eligió en negrita. Es demasiado fácil aprender algo como Java y C #, o incluso C y pasar 10 años de su vida escribiendo código de la manera que siempre lo ha hecho. Empújese, aprenda un nuevo idioma cada año. Cuestiona las cosas que haces, trata de encontrar una mejor manera. Y lo más importante, manténgase involucrado en los Programadores y StackOverflow.
Andrew T Finnell el
Puede hacer todos estos ejemplos en C #. Dom / ajax: bibliotecas C # xml y ajax. ¿Orientado a objetos? Comprobar. MVC? Asp.net marco de mvc.
Carra
21

cuando alguien cuya opinión respeto respeto piensa que es perjudicial.

Esto me recuerda una historia que involucra a Richard Feynman. Un estudiante de Caltech le preguntó al eminente cosmólogo Michael Turner cuál era su "sesgo" al favorecer un tipo de partícula como candidato para comprender la materia oscura, y Feynman espetó y dijo: "¿Por qué quieres saber su sesgo? ¡Forma el tuyo! ... No prestes atención a las autoridades, piensa por ti mismo ".

Los programadores provienen de todos los ámbitos de la vida. En la actualidad, Java se enseña en muchas escuelas secundarias y universidades, pero ni siquiera se había inventado cuando Joel Spolsky estaba en la escuela. No hay un "camino verdadero" cuando se trata de convertirse en un buen programador. Ciertamente, hay algunos clásicos como SICP con los que la mayoría de los programadores se topan en algún momento, pero no hay un estándar duro y rápido. Lo principal es comenzar en alguna parte y enfocarse en construir conceptos. Un gran programador dijo una vez algo como:

Los malos programadores se centran en el código, los buenos programadores se centran en algoritmos.

Creo que C # es un buen lenguaje para empezar, pero te advierto que tengas cuidado con Visual Studio. Es un IDE tremendo, pero si arrastra DropDownListy une a GridViewa ObjectDataSourcey usa un Buttoncontrol para hacer una DropDownListbúsqueda basada, entonces el IDE hace la mayor parte del trabajo y realmente no está programando. Aproveche las herramientas IDEs, pero siempre trate de construir conceptos y desarrollar conocimientos.

BlackJack
fuente
Una respuesta asombrosa.
Yasir
3
Primero dices "Los buenos programadores se centran en los algoritmos" y luego dices "el trabajo lo realiza el IDE y realmente no estás programando". Cual es Puedo escribir un programa, hacer el flujo de trabajo correctamente y no preocuparme por los "detalles de implementación" como GridView y DropDown (suponiendo que sepa lo suficiente como para elegir los correctos y cómo implementarlos correctamente). +1 para el resto de la pregunta, pero usar un IDE no te impide ser un buen programador.
WernerCD
@WernerCD - Cuando dije "el trabajo lo hace el IDE", me refería al ejemplo específico que di. Si toma a un niño que nunca ha hecho ninguna codificación y hace que siga las instrucciones paso a paso en un IDE, creará una página de trabajo, pero no está programando. Creo que los IDE son increíblemente útiles para el trabajo de programación, pero como novato completo, es mejor que aprendas qué es la recursión en lugar de arrastrar los controles.
BlackJack
2
@Graham - Lo siento, pero no estoy de acuerdo. No está tratando de aprender TI o desarrollo de software, está tratando de aprender programación. En mi opinión, es mejor dejar las herramientas IDE para más adelante después de que en realidad seas un programador competente.
BlackJack
16
La clave es que un buen desarrollador no cree en la magia . El trabajo realizado por el IDE (o cualquier otra herramienta) es una conveniencia, un atajo, pero no un reemplazo para la comprensión .
Bevan
7

Solo soy un junior, pero con toda humildad y respeto por aquellos infinitamente más experimentados, debo confesar que tampoco entiendo esta actitud.

Un programador comentó a continuación la respuesta de Joel: " como alguien que ha tenido que golpearse la cabeza contra el escritorio por" programadores "que fueron altamente recomendados por sus habilidades de C #, pero no pudieron hacer cosas simples como implementar una clase base muy bien documentada, encontrar pérdidas de memoria en programas c y c ++ " ...

Pero, ¿por qué encontrar fugas de memoria en aplicaciones C ++ debe ser simple para alguien que nunca afirmó saber C ++? :) No entiendo. Es como criticar a un psicólogo por la falta de habilidades de dentista. Seguramente no soy un buen programador, pero siento que esto no se debe a que no conozco C ++, sino a que no conozco suficientemente el marco y los lenguajes que estoy usando.

"no podía hacer cosas simples como implementar una clase base muy bien documentada (...) o simplemente resolver un problema por su cuenta o aprender una nueva idea incluso a un ritmo moderado"

Bien, pero la correlación no significa causalidad, y ¿qué nos hace suponer que su falta de habilidades generales de programación, lo cual no dudo, es el resultado de su elección de idioma?

¿O un efecto de C # siendo su primer lenguaje de elección, para el caso?

Puedo ver otras explicaciones plausibles (tal vez C # es sólo de moda, y por lo tanto atrae a una gran cantidad de novatos ... la mayoría de las personas para las que C # es el primer idioma no han sido programación muy largo en absoluto , y que es más de un impedimento, en por derecho propio que nunca programe en otro idioma ... etc., etc.).

Konrad Morawski
fuente
Es más como criticar a un carpintero que solo puede usar herramientas eléctricas. Incluso en los idiomas recolectados de basura, saber cuánto tiempo deben permanecer sus variables es una habilidad fundamental. Si no puede reconocer la vida útil prevista de una variable con un descarado freemirándolo directamente a la cara, ¿cómo lo va a reconocer en un programa escrito en un lenguaje que no proporciona tales pistas?
Karl Bielefeldt
1
Te entiendo. Sé que los conceptos básicos de la vida útil variables' (casi tanto como puedo necesitar en C # sobre una base diaria: alcance, using, IDisposable, controladores de eventos hace referencia a sus oyentes etc.), pero no pude intentar siquiera serio para diagnosticar una memoria filtrarse en una aplicación C ++, porque ni siquiera estoy familiarizado con la sintaxis. No sé qué significa asterisco.
Konrad Morawski
5

Diría que aprender un idioma y seguirlo es más un error que decidir con qué idioma debes comenzar. Hay algunos idiomas que puede aprender que son más fáciles, por supuesto, pero es mejor intentar comenzar a aprender uno que usará mucho (en un entorno escolar, la escuela ya elige el idioma). Después de que haya aprendido un idioma correctamente y lo haya usado activamente después de algunos meses, debe incursionar en otro lenguaje de programación y comparar.

En .NET es fácil para usted usar dos (más o menos ) lenguajes de programación diferentes, ya que puede cambiar entre Visual Basic y C #. Para que pueda aprender Visual Basic y ver cuáles son las diferencias. En este nivel, debe ser competente con la codificación básica de procedimiento con las tres estructuras básicas de programación, si puede ser creativo con todas ellas (y saber cómo usar variables), entonces está en camino de convertirse en un gran programador:

  • Secuencia: el código se escribe en secuencia de pasos que se suceden de la manera que usted especifique (define un "salto", paso a paso y gotos)
  • Condicional: el código puede tener puntos de decisión (define declaraciones if, declaraciones de cambio de caso)
  • Bucle / Repetición: el código puede repetirse a sí mismo dado alguna decisión (que es una extensión de los dos anteriores, define bucles for-, do-while-loop)

No importa si su lenguaje de programación secundario será el más activo o no, solo saber que los lenguajes de programación (especialmente si siguen el mismo paradigma) son muy similares entre sí y hay pequeños matices que en realidad ayudan mucho para que comprenda cómo funciona la programación de software.

A partir de eso, al menos una vez al año, intente aprender un nuevo lenguaje de programación que siga otro paradigma de programación . No necesita mantenerse completamente al día con el nuevo lenguaje, pero hay algunos beneficios para conocer otros paradigmas. Hay varios paradigmas, y algunos lenguajes de programación se entremezclan entre muchos (tenga en cuenta que C # en realidad tiene subconjuntos de los siguientes tres):

Lo más importante que debe aprender es que muchos lenguajes de programación siguen su propio conjunto de expresiones idiomáticas y una API básica. Entonces, cuando aprendas un nuevo idioma, trata de aprender bien esos modismos y API y estarás bien cuando construyas cosas. Una buena razón es que te volverás mejor diseñando y resolviendo problemas de programación. Algunas expresiones idiomáticas en un idioma pueden darle una idea de cómo resolver un problema en su idioma principal.

También sepa que también hay otra muy buena razón por la que debería aprender otros lenguajes de programación, además del idioma principal que usará más: sus posibilidades de empleo son mucho mayores.

revs Spoike
fuente
5

El foco de su pregunta y muchas de las respuestas aquí están en C #. De Wikipedia :

El lenguaje C # está destinado a ser un lenguaje de programación simple, moderno, de propósito general y orientado a objetos.

Basándonos solo en eso, parece seguro decir que podrías aprender C # como primer idioma sin dañar tu cerebro a largo plazo. Sin embargo, no creo que Joel estuviera condenando todo el idioma cuando escribió :

Los intentos de tomar un atajo e ir directamente a aprender exactamente lo que desea aprender en este momento (como comenzar con C # y ASP.NET) están condenados.

El problema no es el idioma, está tomando atajos. Con demasiada frecuencia, las personas intentan tomar una ruta rápida hacia su objetivo final siguiendo tutoriales paso a paso o libros de "aprender todo en 24 horas". No tiene que pasar demasiado tiempo en Stack Overflow antes de comenzar a notar que hay muchas preguntas en el sentido de: "Nunca he escrito una línea de código en mi vida, pero me estoy metiendo en el iPhone programación! ¿Puede alguien darme instrucciones paso a paso para hacer exactamente lo que quiero hacer? ¡Gracias! " No digo que estés adoptando ese enfoque, pero es algo de lo que debes protegerte.

Si desea desarrollar habilidades sólidas de programación, debe comenzar aprendiendo habilidades fundamentales. Si intenta saltar directamente a las aplicaciones OOP y GUI y tal, probablemente se perderá esos fundamentos. Los libros que Joel señaló son realmente buenos. Solo he hojeado el Libro amarillo de C # (PDF), pero parece que probablemente sea una mejor introducción a la programación que la mayoría de los libros de C # que veo en las tiendas.

Caleb
fuente
Me gustaría señalar que la redacción no es "no aprenda C #", es "C # y ASP.NET" (énfasis agregado). No soy un programador de C #, pero .NET y CLR son una buena plataforma para comenzar a aprender.
Forivall
5

Para mí, esas cosas en ese otro artículo sonaron un poco como una tontería elitista. Sí, con frecuencia recomiendo SICP a los desarrolladores serios que realmente quieren mejorar, pero solo a aquellos que quieren ir más allá de la "norma" y aprender la magia profunda. De hecho, durante años el SICP fue el texto estándar de programación de primer año del MIT; pero, muchos programadores que trabajan solidos nunca tuvieron la oportunidad de asistir a esa institución fina pero costosa y altamente selectiva.

Entonces, ¿ qué recomiendo en respuesta a su pregunta? Comience con lo que tiene y aprenda a pensar como un programador, en lugar de simplemente aprender un lenguaje específico.

Si tiene una implementación de C # disponible, bueno, puedo decirle que es un lenguaje perfectamente bueno para un trabajo rígido como yo, como lo son Java, JavaScript, Python, Ruby, Scala, Scheme y los muchos otros lenguajes que tengo. aprendido a lo largo de los años. Al final, trato de seleccionar los idiomas y herramientas adecuados para el trabajo específico en cuestión, y eso significa cambiar idiomas como sombreros.

No hay nada de malo en usar formas divertidas de aprender, como acercarse a Ruby a través de la Guía y zapatos conmovedores de Why (como recomendé en otra publicación reciente ). Hay caminos arcanos y místicos, como golpearse la cabeza contra The Little Schemer y The Seasoned Schemer de camino al SICP . Muchos pensadores modernos quieren que omita todas esas cosas académicas y "empresariales" más antiguas y que se sumerja directamente en JavaScript, JQuery y HTML5. Hay muchas maneras de comenzar, así que no pierdas mucho más tiempo. ¡Solo elige uno y obtén la codificación!

Siendo realistas, creo que pocos profesionales que trabajan en estos días lo enviarían hacia atrás para aprender Assembler o C / C ++ primero. Francamente, si lo hicieran, no creo que le estén prestando un gran servicio.

Entonces, para embellecer un poco "comienza con lo que tienes", tengo tres consejos más:

  • Elija un lenguaje de programación que le parezca genial y un enfoque de aprendizaje que parezca tener sentido y lo dé todo. Aprende a leer y escribir en el idioma elegido; ¡lea tanto código bueno como pueda!
  • Ponga sus manos en su teclado de inmediato y comience a codificar a medida que aprende. Realice todos los ejercicios elementales en sus libros de programación usted mismo y practique todos los tutoriales que puede encontrar con sus dedos haciendo clic felizmente para que realmente funcionen. ¡Te sorprenderá la cantidad de habilidades que obtendrás al corregir errores en demostraciones que se supone que funcionan como código pero no lo son!
  • Dedique la mayor parte de su esfuerzo a aprender cómo los buenos programadores piensan en los problemas. Aprenda a analizar y descomponer problemas y sistemas complejos, desglosándolos hasta que realmente los entienda. Luego, aprenda a sintetizar y diseñar soluciones automatizadas, desarrollándolas de modo que faciliten alguna tarea para algunos seres humanos en este planeta.

¡Comencé con FORTRAN IV y QBASIC y si eso no me arruina, C # tampoco te hará daño! ¡Buena suerte y asegúrate de divertirte mientras aprendes!

John Tobler
fuente
Puede encontrar las conferencias originales de Abelson y Sussman aquí: groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures
BlackJack
4

Creo que el mejor consejo que he visto cuando se trata de personas que preguntan "¿Qué idioma debo aprender?" es simplemente: un buen programador puede trabajar en cualquier idioma.

Hay argumentos en contra de esa afirmación, estoy seguro, pero el punto es: primero aprende a ser un buen programador, en lugar de un experto en lenguaje. Los constructores no se especializan en construir exactamente en una parcela de tierra, aprenden las habilidades de su oficio y las aplican en cualquier parcela de tierra en la que se les requiere.

Andy Hunt
fuente
Haré +1 en eso. Es similar a mi analogía habitual de construir motocicletas. Puedes construir una motocicleta decente trabajando en la línea de ensamblaje y siguiendo el libro, pero los constructores realmente asombrosos son los helicópteros que conocen las entrañas de la bicicleta dentro y fuera, y como resultado obtienes algunas cosas increíbles.
Jarrod Nettles
3

A veces sospecho que los idiomas de elección tienen mucho más que ver con nuestras personalidades y de la forma en que estamos conectados y mucho menos que ver con consideraciones prácticas o académicas de lo que nos gustaría admitir.

Dicho esto, aprender cosas nuevas nunca es dañino. Sabrás el día que has cruzado el umbral hacia un cerebro evolucionado o quizás roto (supongo que todo es cuestión de perspectiva) cuando comiences a darte cuenta de que todo tiene un manual. En última instancia, puedes hacer lo que quieras si tienes algo de talento y estás realmente interesado en hacer algo en lugar de ser el aspecto de un programador.

Al menos juega con Python y JavaScript. Es una clara ventaja de aprendizaje poder realmente escribir código y verlo ejecutar inmediatamente en un entorno de consola accesible de E / S de archivo como IDLE o un entorno de sandbox como un navegador. Lo que no me gusta de C # y Java es que quieren que todo se limite a las clases, incluso si realmente solo está escribiendo una función simple con envoltorios inútiles para mantener contentos a sus compañeros o un compilador demasiado restrictivo. La otra cosa que me gusta de JS y Python es que realmente te permiten establecer tu propio paradigma. Un poco demasiado flexible por muchas preferencias de desarrolladores. Todavía no estoy seguro de qué pensar sobre la sabiduría de sobrecargar los operadores básicos, pero estoy bastante seguro de que me encanta Python por permitir la opción.

Tampoco caiga en la cruel mentira de elegir el idioma principal con la mayor cantidad de ofertas de trabajo. Es mejor ser un gran pez en aguas medianas haciendo lo que te gusta que un miembro de una horda de peces insufribles en su mayoría que convierten cada búsqueda de trabajo en más una lotería que un proceso de correspondencia.

Erik Reppen
fuente
Como alguien que contrata a esa horda de peces insufribles en mi trabajo diario, tengo que estar de acuerdo. Hay muchos comentarios realmente útiles en esta discusión; Espero que @toleero lo encuentre útil y no se desanime. En mi opinión, aunque Joel es un genio, nunca deberíamos aceptar todo lo que alguien dice como evangelio. Los libros que recomienda son útiles. Pero también lo es codificar día a día y adquirir experiencia práctica. Hazlo en un puñado de lenguajes (por ejemplo, C # y algo menos parecido a C: un básico, tal vez, o Python o Ruby) y serás al menos tan buen desarrollador como muchas personas: o)
Owen Blacker
3

C # no es tan malo como Java en un tramo considerable. Tienen un mejor soporte para muchos conceptos como programación funcional, programación genérica, destrucción determinista y tipos de valor, sobrecarga del operador, etc. Su soporte para estas características aún podría requerir mucho trabajo, por supuesto, pero es mucho mejor que Java, incluso si No es C ++.

En segundo lugar, creo que estás leyendo mal lo que dijo Joel. Si puede dominar los punteros y la recursividad, entonces no importa qué idioma esté usando ahora. Lo más importante sería usar un pequeño unsafecódigo, familiarizarse con unsafe quicksortalgo o algo así y luego volver al resto de C # normal.

Ah, y empieza a leer :)

DeadMG
fuente
2

El primer lenguaje productivo para mí fue C #. Aunque había jugado con Foxpro en el horario escolar y un poco de C en la universidad. C # es bastante bueno y muy buen punto de partida para cualquiera. Sigue los fundamentos generales de la programación como mecanografía fuerte, encapsulación, herencia, etc., que creo que siempre se debe aprender, sin importar si los usan o no. Más tarde, siempre puede pasar a otros lenguajes como Python que no sigue la estandarización de la programación fundamental.

El otro factor adicional que la gente realmente no agrega al aspecto de aprendizaje de C # es la disponibilidad del mejor IDE para cualquier lenguaje que haya visto. Eclipse IDE también es bueno, pero una vez que haya usado Visual Studio, agradecerá a Microsoft.

C # se mejora sobre C, asegura que no necesita aprender otros idiomas de antemano. Todos los lenguajes durante más de una década han evolucionado a partir de la naturaleza de C, incluso el JAVA.

Entonces, el veredicto es que C # es un excelente punto de partida que le brinda la capacidad de aprender otros idiomas rápidamente en el futuro

Pankaj Upadhyay
fuente
Eclipse es mucho mejor para mí que Visual Studio. Pero estoy de acuerdo con usted: C # sería un gran lenguaje, especialmente si no fuera propiedad de y estuviera encerrado en el malvado señor de Redmond que destruye los estándares propietarios .
Thomas W
2

Aprender C # como primer idioma no es un error, siempre y cuando tarde o temprano avance y comience a aprender un segundo idioma. Eso es mucho más importante. Aún mejor si ese segundo lenguaje es algo diferente de C # (javascript o ruby ​​en ese sentido sería mejor que java). Cada idioma tiene sus pros y sus contras, y son las diferencias las que te harán un mejor programador a largo plazo.

Henrik
fuente
1

Por mucho que te aconseje que aprendas muchos idiomas (como sugieren los demás), asegúrate de conocer un par de idiomas que aprendas muy bien.

El riesgo de conocer muchos idiomas es que es posible que nunca aprendas un idioma por completo, causando frustración cuando realmente quieres resolver un problema.

Conocer la construcción del bucle for es muchos idiomas es divertido pero inútil si no sabes cómo manejar los errores en ninguno de ellos.

Erno
fuente
1

No se preocupe por saber que aprendió C # primero. Es similar a preocuparse de que su primer paso se haya dado con su pie izquierdo o derecho. La única diferencia entre aprender primero un idioma administrado es que solo se está demorando cuando tiene que aprender punteros y administrar la memoria detallada. En realidad, esto puede funcionar a su favor, ya que cuando llegue el momento de aprender C, lo único que le preocupará es la gestión de la memoria: no estará haciendo malabarismos tratando de aprender las estructuras de control, el concepto de funciones, etc. ser capaz de concentrarse completamente en punteros y administración de memoria.

El estereotipo existe porque hay programadores de lenguaje administrado que nunca hicieron esa segunda parte y aprendieron C y C ++, y luego aplicaron a los trabajos de C y C ++.

Es como aprender un instrumento musical: el primero es difícil porque estás tratando de aprender la mecánica de leer música escrita Y la mecánica física de articular un instrumento para hacer lo que quieres. Para el segundo y posteriores instrumentos que aprenda, puede concentrarse únicamente en lo que hace que ese instrumento sea diferente de lo que ya sabe.

luego
fuente
1

Es duro para el novato, sin duda. He hecho vb, javascript, PL / SQL, T-SQL, Uniface y un poco de C # por nombrar algunos.

Alguien mencionó anteriormente Visual Basic como donde aprendieron sobre programación orientada a objetos, y para ser honesto, VB.NET tiene la sintaxis más fácil de entender de cualquier lenguaje que haya visto. La mejor característica es que las palabras clave coinciden con los conceptos que se describen detalladamente.

Por ejemplo, la función myHandler () maneja myButton.click

o Class Human Extiende los implementos de mamíferos intelligentLifeform

En serio, para facilitar la lectura cuando eres un novato, ¿a qué más te gustaría que se viera la sintaxis?

Cuando busca propiedades y métodos (y distribuye entre subs y funciones) es mucho más fácil de leer en VB.

Del mismo modo al declarar variables

Dim myString As string - obvio cuál es el tipo y cuál es la instancia

La distinción entre mayúsculas y minúsculas de C # alienta lo que para mí es un mal hábito grave: tener el mismo nombre para la clase y la instancia, siendo una mayúscula y otra inferior.

p.ej

Humano humano

  • ¿Hay realmente pocas palabras en su vocabulario que tenga que reutilizar las existentes con mayúsculas?

si llama a human.think, sería fácil confundir una instancia con una clase y pensar que estaba llamando a un método estático de un vistazo. Y mirar a menudo es cómo percibimos el código, no tenemos tiempo para pasar el mouse sobre cada elemento para que el editor nos diga qué está pasando.

C # puede tener algunas ventajas, pero es mucho más difícil comenzar, incluso si ahorra escribir. Es por eso que definitivamente debería haber un lugar para ambos idiomas.

Andy R
fuente
+1 para humanos humanos. Tener c # como un segundo idioma (pan y mantequilla = Delphi) a través de un libro en lugar de tener una experiencia profunda con el código existente, siempre me duele un poco ver esto. Aunque hay partes del lenguaje que realmente me gustaron, arrastrar la distinción entre mayúsculas y minúsculas desde C fue un gran error en mi humilde opinión.
Matt Allwood
Claro, porque Dim myHuman as Humanes mucho mejor? : D
scrwtp
0

El mayor inconveniente que puedo ver es que Visual Studio y las herramientas asociadas son muy, muy agradables: cosas como la inteligencia y la finalización del código pueden convertirse fácilmente en muletas. En general, diría que el entorno puede ser tan agradable y favorable que tiende a sentirse un poco perdido cuando necesita, por ejemplo, piratear el código ruby ​​en un editor de texto. Ah, y por lo general también extrañarás cosas como linq.

Wyatt Barnett
fuente
0

C # está perfectamente bien para comenzar a programar.

Es lo que me dijeron que comenzara, sin siquiera tener la oportunidad de incursionar en otra cosa (aparte del Hello World en Java, algunas cosas básicas de LOGO y algunas cosas en Scratch, pero nada "serio").

En general, puede ser difícil: hay muchas cosas que no parecen intuitivas, y tiene sus limitaciones, pero creo que fomenta una buena codificación y es excelente una vez que lo dominas. Quiero decir, te da más poder y es un poco más profesional que Python (que generalmente se sugiere), y eso marcaría una gran diferencia: probar C ++ después de C # no fue demasiado doloroso, pero si hubiera comenzado con Python, entonces sería un gran obstáculo, incluso solo en el nivel de sintaxis.

Además, tiene un buen soporte multiplataforma en forma de Mono (para aquellos de ustedes que piensan que Mono no es un gran problema: Unity Game Engine les permite codificar en una versión de él). También es bastante útil para la mayoría de las cosas, ya sean secuencias de comandos de juegos, diseño web o aplicaciones de Windows. Por supuesto, algunos idiomas serán mejores para ciertas líneas, por lo que dependerá de la dirección general en la que planee ir, por ejemplo, si va en la dirección web, entonces C # (ASP.NET) definitivamente sería un buena idea. Si planeas entrar en juegos, entonces deberías pensar en C ++.

Al final, vale la pena aprenderlo, incluso si no terminas usándolo en favor de la simplicidad de Python o la naturaleza arcaica de Java (ya que el ciclo de lanzamiento para Java es REALMENTE lento): aprendes una buena codificación prácticas, aunque no es demasiado complicado para que un novato aprenda.

Sbspider
fuente
esta publicación es bastante difícil de leer (muro de texto). ¿Te importaría editarlo en una mejor forma?
mosquito
1
¿Como es eso? ¿Aún es difícil de leer o está bien ahora? Gracias por cierto por los avisos.
Sbspider
-1

Para ser un programador necesitas tener pasión. Los programadores que conozco son los que se esfuerzan por aprender y notar cambios en la industria. Comencé mi programación con basic en un Commodore Vic 20 (sí, ese viejo) y seguí avanzando a otros idiomas nuevos. Parte de mis años de programación incluso incluyó COBOL. También comencé a notar que algunos idiomas funcionaban mejor en ciertos procesos frente a otros. Mi consejo para usted es aprender cualquier idioma y comprender conceptos básicos de programación como bucles, métodos, comparaciones. La mayoría de los idiomas admiten esos tres conceptos. Nunca debe decir "Esta es la mejor manera", sino "¿Cómo puedo mejorar esto?". Lo peor de esa última oración es que podrías encontrarte con la ingeniería. ¡La programación es divertida, hazla divertida! Internet abrió una forma completamente nueva de experimentar la programación porque el nivel de acceso que tenemos hoy a la información es asombroso. Para mí, antes de internet, tenía que ir al estante y bajar los libros de programación GRIS de IBM y aprender. Hoy puedes escribir una cosa en google y whammo.

marca
fuente
2
esta publicación es bastante difícil de leer (muro de texto). ¿Te importaría editarlo en una mejor forma?
mosquito
-3

Wow muchas respuestas. Aquí está mi punto de vista:

C # no es un lugar para aprender informática. Lo veo como una idea extremadamente mala. Voy a enumerar algunas de mis preocupaciones a continuación.

  • C # es un lenguaje de Microsoft. No es que esté juzgando a la EM aquí, solo que fuera del mundo de la EM hay poca aceptación. Si solo desea programar el hardware de MS, continúe, pero no veo que este sea un enfoque sólido para la informática.
  • No soy un gran admirador de aprender a programar con lenguajes administrados. Creo que su valor es aprender a administrar la memoria de un programa y la construcción de estructuras de datos.

Demasiado cansado para continuar, elige rápidamente otro idioma.

Dave
fuente
Puedo entender si crees que vincularte a la EM sería malo para tu carrera. Pero, ¿qué tiene eso que ver con aprender informática? CS no tiene nada que ver con plataformas o corporaciones.
svick
-3

Recomendaría C # o cualquier lenguaje que ofrezca estas tres cosas en su núcleo:

Completamente tipeado Compilado y totalmente orientado a objetos.

Un primer lenguaje que ofrezca estos tres núcleos enseñará mucho sobre el flujo del programa, la sintaxis y cómo resolver problemas de una manera más estructurada. Vivo y respiro dentro de un montón de excelentes idiomas que no tienen estos atributos, pero si le estuviera enseñando un idioma a alguien, elegiría uno que tuviera estos tres requisitos.

Feech
fuente
-6

No, esa respuesta es terrible. ¿Por qué? Bueno, él prescribe algunos buenos libros que definitivamente deberías leer, pero sin el trabajo en el aula y el trabajo de laboratorio (laboratorio de computación), estarás perdido y frustrado. Debes estar con un grupo de otros programadores nuevos experimentando porque hay muchísimo que aprender aparte de lo que hay en esos libros. No estoy diciendo que tenga que optar por un BSCS, pero también necesita acceso a un instructor experto cuando un montón de cosas pueden salir mal en cualquier instante, como problemas de compilación, entornos de compilación ... lo que sea. No serás un gran programador trabajando en el vacío. Cualquier libro que requieran tus cursos será lo suficientemente bueno siempre que elijas una escuela decente a mitad de camino.

Por lo tanto, inscríbase en algunas clases y será MUCHO más divertido. Además, si planea obtener un trabajo como programador, necesita conexiones y escuchará todo el rumor sobre las empresas que reclutan en el campus, etc.

Finalmente, la educación formal es muy importante ya que la programación requiere una gran cantidad de conocimientos teóricos para comprender cómo se supone que funcionan las cosas en todos los niveles (hw / sw) para que pueda descubrir cómo solucionarlas. Casi todo es un recuadro negro, por lo que debes ser capaz de descubrir por qué algo se comporta de la manera en que lo haces para poder tomar la siguiente puñalada lógica en la oscuridad. Sin al menos un título de programación de 2 años (como lo llames) estarás en desventaja.

PD: No iría cerca de .Net o C # hasta que haya experimentado Java. C # no es agradable a la vista. Es un código desordenado y desordenado. El .Net IDE apesta más allá de lo creíble. Está en la edad oscura de los estándares IDE. Java: C # ~ Datos: Lore

Tom Jones
fuente
10
Estoy contigo hasta el último párrafo. Expresa su opinión sobre la estética de C # de una manera tan inflamatoria que simplemente no parece pertenecer a una buena respuesta.
Adam Lear
99
Incluso antes del último párrafo, esto no tiene sentido. Algunas personas aprenden bien en un ambiente de clase, pero para otros es una pérdida de tiempo total. Aprender los antecedentes teóricos es importante, pero eso no necesariamente requiere un aula o educación formal: ayudan a algunas personas, pero no (ni siquiera a) a todos.
Jerry Coffin
Una opinión es solo eso; No es una declaración de hecho. Entonces, no te sientas ofendido.
Tom Jones
Usted no entendió la recomendación para la escolarización formal. Necesita un lugar para hacer preguntas y colaborar con sus compañeros en el laboratorio. La colaboración es el concepto clave. Lo siento si eres un usuario de C # y te ofendí a pesar de que eso debería ser imposible entre los técnicos desapasionados.
Tom Jones
1
Stackoverflow se ha convertido en ese "laboratorio" para muchas personas que no pueden ir a la universidad pero quieren apoyo de la comunidad. ¿Es lo mismo que una clase? Por supuesto no. ¿Es lo suficientemente bueno? Usted apuesta.
BlackJack