En primer lugar, responderé la segunda parte de su pregunta en 2 palabras: “Ingeniería inversa”
Ahora, la primera parte (sé PHP, Javascript, Python, Java, Visual Basic, C, C ++, Scala ) y esta lista está en orden decreciente de mi experiencia / conocimiento en cada idioma.
Ahora de nuevo a la segunda parte, comenzaré con Visual Basic. Cuando tenía 11 años, tenía acceso a una computadora en la oficina de mi madre y solía jugar juegos. Un día, mientras buscaba nuevos juegos (Pensando que debería haber muchos otros juegos en una computadora, ya que no conocía el concepto de instalación de software), encontré Visual Basic. Pensé que es algo que se usa para editar películas (debido a la palabra visual en ella). Luego empecé a jugar con él, lo que me hizo encontrar un libro en el estante de un hermano de mi amigo, me acompañó el CD, lo reproduje, lo edité y me encantó. He creado más de 20 aplicaciones en Visual Basic, que incluyen un reproductor de música, un reproductor de video, un sistema para manejar libros y todo. Incluso tomé hojas falsas de enfermedad de la escuela para jugar con eso.
El siguiente es C, C ++ y un poco de Qt. Un día, recibí un mensaje en mi pantalla que decía “falta el ntldr”. Y el sistema no estaba arrancando. Me sentí como el fin del mundo. Así que tuve que instalar algún tipo de sistema operativo según lo sugerido por el técnico de reparación de computadoras (era un dolor en el culo para él, ya que solía molestarlo, incluso para la más simple de las cosas). Lo que hizo a continuación fue interesante: instaló Mandriva Linux en mi sistema. Un chico de 8º grado sin experiencia previa en Linux tenía que jugar con él. Desafío aceptado. Comencé a jugar con él, lo aprendí como unos días, y mientras navegaba encontré algunas imágenes que se usaron en la interfaz de usuario, en /, / usr / share, etc. Empecé a editarlas. Después de una semana o pocas, el Mandriva Linux era 80% “Linux de Sachin”, con mi foto como la pantalla de Spalsh y todo. Estaba preocupado por el 20% restante. Así que empecé a profundizar usando mi acceso telefónico a menos de 12 kbps en Internet (¿o lento?). Encontré esta cosa llamada KDE. Descargué la fuente y no tenía idea de qué hacer con ella. Encontré un par de CPP, extensiones Qt, y en el transcurso de 3 meses logré descifrarlo 😀. Diría que aprendí un poco sobre CPP (usé algunos libros, por supuesto), pero mis modificaciones fueron generalmente sobre datos de cadenas. Fue una obviedad. Pero empecé a escribir pequeños programas c, cpp y los probé. También tomé prestado algunos códigos de algunos de los estudiantes senior – de sus proyectos académicos, los compilé, los modifiqué.
Y un buen día, obtuve Knoppix (un sistema operativo Linux en vivo que se ejecuta desde un solo CD). Quería modificarla, ya que no tenía forma de distribuir mi propia versión de Mandriva. Me di cuenta de que hay algo llamado remastering a linux distro (algo que ya hice con Mandriva, pero me dieron el término usado para describir el proceso) en algún foro. Con la ayuda de google encontré este enlace (Knoppix Remastering Howto). Comencé a construir, pasé muchos días sin dormir en mi máquina lenta con super slwo internet (en ese momento también tenía una instalación de Windows que solía navegar por internet, ya que mi módem interno Smartlink no era compatible con Debian). Y un día, lo hice. Tengo un distro de linux por mi cuenta. Nadie lo usó en ese momento, excepto yo. Y estaba cansado de cambiar de sistema operativo solo para acceder a internet. Entonces, comencé a excavar y, después de unos días, encontré un código en el sitio de algún desarrollador que permitiría que los módems de enlace inteligente funcionen en Linux. Lo descargué, lo compilé y, de repente, obtuve internet en mi sistema operativo. Lo siguiente fue integrarlo al kernel. Pasé un año en eso. Aprendí mucho C y CPP para esto (este es uno de los pocos sitios malos que hice para mi sistema operativo, tan estúpido que es y su una advertencia – Página de inicio del sistema operativo SFS Snoopix!!!!). Pero después de eso, obtuve mi versión 2.0, con un kernel personalizado, un LILO editado con muchas animaciones, soporte para mi idioma nativo (malayalam) y soporte para módems de enlace inteligente. Pese a eso, fue un viaje increíble y mi computadora el profesor realmente lo instaló en una de las PC de la escuela. Así que eso fue C, CPP y Qt.
El siguiente es PHP (yo estaba en 10º grado esa vez). Si ha visitado el sitio anterior, ahora puede tener una idea sobre mis habilidades html en ese momento. Fue patético. Me di cuenta en ese momento en sí. Entonces, quería un sitio dinámico con muchos parámetros de url y todos (no sé por qué, pero pensé que era genial). Comencé a cavar de nuevo, y para entonces ya había perdido interés en el sistema operativo. De algún modo, llegué a conocer la página principal de Microsoft (una aplicación utilizada para diseñar páginas web) y probé ASP. Pero fue realmente difícil conseguir personas que conocían ASP en mi área. Pero mientras preguntaba por ahí, llegué a conocer PHP, y obtuve una persona que sabía una o dos cosas al respecto. Comencé a aprender, pero la curva de aprendizaje era muy baja, ya que estaba familiarizada con C, CPP e ingeniería inversa. He descargado un montón de código, mucho como en un infierno de código. Los probé todos; modifiqué los interesantes (siempre empecé modificando imágenes y cadenas), luego, en un lapso de pocos meses, tuve una idea acerca de PHP, bases de datos y todo. A partir de ahí, empecé a ocuparme de proyectos pequeños, mi primer proyecto fue con un hombre paquistaní (envié un correo al propietario de un sitio al azar y aceptó trabajar conmigo; mi demanda no era en efectivo, sino solo mi nombre en el jefe de mástil de el sitio y un enlace a mi sitio). Hice un montón de trabajo, y el sitio estuvo en vivo durante unos pocos meses, y un día mi tío descubrió que estaba trabajando con un hombre de Paksitani, uff, perdí Internet 😀 (pero ahora tengo un par de amigos paquistaníes ). De alguna manera convencí a mis padres de que no voy a tratar con ningún pakistaní y me consiguieron una conexión de banda ancha (¡Win!). Así que gradualmente tomé proyectos, trabajé para muchos clientes y comencé a ganar algo de dinero, para un estudiante de 10º grado, todos eran sitios web simples. Pero después de unos meses, aprendí Joomla, WordPress, etc. y amplié mis ofertas de servicio. Así que esto me dio mucha exposición a PHP, que incluso terminó obteniendo una oferta de trabajo de una empresa no mala durante mis vacaciones de verano 10, que fue demasiado para mí y no la acepté (risas). Todavía código en PHP, mucho, soy un desarrollador independiente, por lo que diría que estoy aprendiendo PHP. La misma historia va con Javascript.
Python, Scala, Java no tiene historias interesantes, excepto que
- Aprendí Python para rastrear sitios web principalmente, y automatizo mi tarea diaria, como administrar servidores, programaciones, etc. Y, obviamente, lo aprendí mediante ingeniería inversa en gran cantidad de código Github
- Scala: no sé mucho de eso, francamente. Pero lo aprendí solo porque quería aprenderlo. Todavía lo estoy aprendiendo – ingeniería inversa por supuesto.
- Java: el crédito se lo otorgo a mi último examinador externo para Java Lab. Un tipo genial, a quien le dije justo antes del examen que no conozco ningún “JAVA”, y me asignó un HTML para el examen de laboratorio. Y durante viva me preguntó sobre lo que hago y todo. Creo que se impresionó con lo que hice en el examen. Agregué muchos css, js, etc. a una tarea html simple, y me dijo que si aprendes java. será agradable. Sin embargo, me dio buenas notas para el examen. Pero me sentí muy mal, y después de la universidad comencé a aprender JAVA (aún no estoy interesado en eso, Dios sabe por qué).
Bueno, esa es mi historia – pequeña pregunta larga respuesta, supongo. Así que aquí está la respuesta corta a su segunda pregunta de nuevo.
La mejor manera de aprender cualquier idioma es mediante ingeniería inversa código ya disponible, edítelo, vea la salida, llévelo al siguiente nivel creando algo mezclando muchos de sus propios fragmentos de código modificados.
PD: – En ese momento, mis habilidades de diseño eran realmente malas (sí, estoy hablando de ese extraño sitio mío), pero puedes ver mi sitio en construcción aquí, Denziti.