Quiero aprender a usar C#, es una espina que he tenido clavada varios años, yo estudio derecho y me quiero dedicar a ello, por lo que esto de programar mas bien me lo quiero tomar como un hobbie ...
¿Cuanto tiempo me puede llevar? Se que es dificil de determinar
¿Empezariais si o si por C# o elegiriais otro lenguaje?
Siendo ese tu caso, C# te va perfecto. La curva de aprendizaje es bastante rápida.
Si te resulta complejo, todavía VB-NET es una mejor opción (de cara al aprendizaje). No obstante está programado que VB-NET acabe desapareciendo, luego no tendrá un recorrido lejano, así que puede ser preferible centrarte en C#.
El tiempo que puede llevar?. Depende variso factores desconocidos (para el que responde).
Capacidad de aprendizaje, conocimientos previos, tiempo empleado cada día.
Solo uno mismo conoce esos detalles, la evaluación que los demás haan de eso será siempre ficticia.
Te recomiendo que adquieras algún que otro libro (pequeño de esos de 18x13 aprox. con no más de 200 páginas) que te sirva de introducción... será fácil seguirlo y no te debería llevar mucho tiempo, si al final del mismo no te 'defrauda' y no has perdido las ganas de seguir aprendiendo, tira por alguno más completo (de esos tochos de 3 dedos de 800páginas y de 27x18aprox)... Co éste lo que haces es ampliar los conocimientos que adquiriste en el otro más sencillo, además profundizas y cubres áreas que el otro dejara de lado porque son temas mas avanzados.
Puedes alternar la lectura dle libro y la ejercitación del código con algún vídeo de youtube. Personalmente no me suelen agradar, porque asumen cosas que un novato aún ignora o no explica cosas que 'el mismo que explica desconoce, es decir suelen ofrecer un lenguaje con lagunas, pero siendo usado como acompañamiento de algún libro, puede ser perfectamente válido. En la medida que adquieras un conocimiento básico, luego se aprende mucho más rápido.
He leído muchas veces que hay que aprender a programar y no a usar un lenguaje, ¿Cómo hago eso? Mas o menos entiendo un código, si me lo pones delante se para que funciona pero no se escribirlo, manejo bien css y algo de lua y js pero es eso, no se escribirlo, la logica mas o menos la pillo.
Nota, que lo que no se puede enseñar es a pensar, ahí entra el genio de cada uno... la mayor parte de la gente solo es capaz de hacer las cosas que ya alguien le ha enseñado o ha practicado, son por tanto incapaces de abordar 'temas nuevos' sin la guía de otros...
Aprender a aprogramar es pensar, descomponer el problema en tareas y exponer por orden los pasos a seguir... luego redactar el código, esto último es dependiente del lenguaje usado, se requiere por eso conocer un lenguaje al menos. Nota que no todos los lenguajes valen para todo... Lua se propugan como un lenguaje académico, en mi visión e suna pérdida de tiempo, es heredero de C, tiene limitaciones... Con C# es un lenguaje totalmente profesional, también hereda de C, pero detrás de un largo camino de evolución (el de Ms), no tiene la mayor parte de pamplinas que estorban en C, y no tiene limitaciones elementales.
Cada lenguaje precisa adaptarlo, del mismo modo que el procedimiento para areglar (por ejemplo) el motor de un vehículo averiado es único, pero un manual es requerido por cada idioma en el que se quiera vender...
¿Cómo hago eso?
Piensa 'en humano', resolver la tarea igual que se resuelven los problemas matemático, de modo sistemático.
A mí me pasa al revés, sé escribir más o menos algunos códigos pero en muchos casos no los entiendo. Y menos entiendo lo que piden los ejercicios. Por ejemplo:
"Utilice un arreglo con un solo subíndice para resolver el siguiente problema. Lea 20 números, en donde cada uno se encuentre entre 10 y 100, inclusive."
No sé lo que es un subíndice, y no entiendo a qué se refiere con "lea" ¿hay que crear un arreglo? ¿y luego qué, qué significa que "lea"?
Un problema del autodidacta es permanecer en sus burbuja todo el tiempo, sin 'contacto exterior', acabas creando tu propio lenguaje y jerga que solo tu conoces, pero que nadie más entiende y a su vez, tu no entiendes al resto, por lo mismo, porque has estado demasiado tiempo en 'tu burbuja'.
Por 'lea', debe entenderse que pida al usuario los datos que se reclaman, luego 'lee' los datos de la entrada de datos (esto es típicamente el teclado, fichero, etc...), el programa pregunta (pide) algo al usuario, éste responde con el teclado y el programa va procesando esa entrada eso es lo que significa 'lea'.