Carrera de programación. Capítulo 2. Escuela o autoeducación

Continuación de la historia "Carrera de programador".

Era el año 2001. El año en el que se lanzó el mejor sistema operativo: Windows XP. ¿Cuándo apareció rsdn.ru? Año de nacimiento de C# y .NET Framework. Primer año del milenio. Y un año de crecimiento exponencial en la potencia del nuevo hardware: Pentium IV, 256 mb de ram.

Después de terminar el noveno grado y ver mi entusiasmo inagotable por la programación, mis padres decidieron transferirme a la universidad para especializarme en Programación. Creyeron que sería mejor así y que allí me enseñarían. La palabra colegio, por cierto, no le sentaba bien a esta institución, situada en las afueras de una ciudad industrial. Era una escuela técnica ordinaria, no diferente de otras escuelas técnicas que no colgaban en su fachada una etiqueta con la palabra de moda "universidad".
Bien. No contradije a mis padres ni cuestioné su decisión. En cualquier caso, me dediqué a la autoeducación y pensé que en este nuevo lugar me darían algunos conocimientos adicionales.


Ese verano antes de ir a la universidad, comencé a estudiar a fondo todas las tecnologías posibles que se publicaban en la revista. "Hacker". Lo leí y releí en pedazos. Me gustaron especialmente las entrevistas con hackers reales y sus consejos.
La mayoría de los hackers interesantes estaban en Linux. Y Mazda (Windows) era para tontos. Cualquiera que haya leído la revista recuerda el estilo de las publicaciones que contiene. Por lo tanto, en mi frágil mente, dos ideas luchaban entre sí: dejar Windows o ser genial y seguir exclusivamente con Linux.
Cada nuevo número de la revista Hacker me daba una nueva razón para formatear el disco e instalar Linux Red Hat 7 o Windows Me. Por supuesto, no tenía ningún vector de entrenamiento e hice lo que leía en revistas o en CD pirateados como “Secrets of Hackers”. También se eliminó la instalación de dos sistemas operativos en paralelo, después de una nueva actualización con el espíritu de “Windows XP, también conocido como loro, esto es para amas de casa”. Y si quieres hacer cosas serias, tienes que trabajar desde la consola Linux con los ojos cerrados”. Por supuesto, quería hackear sistemas, entender cómo funciona la red y ser el todopoderoso Anonymous en ese momento.

El disco se formateó sin ningún remordimiento y se instaló en él un kit de distribución de un sistema tipo Unix. Sí Sí. Una vez leí una entrevista a un hacker real que sólo usa FreeBSD 4.3 desde la consola. Al mismo tiempo, fue responsable de piratear bancos y sistemas gubernamentales. Fue un rayo en la cabeza e instalé BSD OS como sistema principal 5 veces. El problema era que después de la instalación, no había nada más que la consola básica. Incluso sonido. Y para instalar KDE2 y encender el sonido, fue necesario bailar mucho con una pandereta y corregir varias configuraciones.

Carrera de programación. Capítulo 2. Escuela o autoeducación
La distribución FreeBSD 4.3 es el sistema operativo más hacker

Acerca de la literatura

Tan pronto como compré una computadora, comencé a comprar libros sobre programación. El primero fue una guía para "Turbo Pascal 7.0". Esto no es sorprendente, porque ya conocía un poco de Pascal gracias a los cursos de programación y podía seguir aprendiendo por mi cuenta. El problema era que los hackers no escriben en Pascal. Entonces estaba de moda el lenguaje Perl o, para los chicos más interesantes, era C/C++. Al menos eso es lo que escribieron en la revista. Y el primer libro que leí hasta el final fue "El lenguaje de programación C", de Kernighan y Ritchie. Por cierto, estudié en el entorno Linux.
y usé gcc y el editor integrado de KDE para escribir el código.

Después de este libro, se compró la Enciclopedia UNIX. Pesaba 3 kilogramos y estaba impreso en páginas A3.
En el anverso del libro había una representación de cuerpo entero de un diablo de dibujos animados con una horca, y entonces costaba 125 jrivnia en Ucrania (eso era alrededor de 25 dólares en 2001). Para comprar el libro, le pedí dinero prestado a un amigo de la escuela y mis padres añadieron el resto. Luego, comencé a estudiar con entusiasmo los comandos de Unix, el editor vim y emacs, la estructura del sistema de archivos y el interior de los archivos de configuración. Devoré casi 700 páginas de la enciclopedia y me acerqué un paso más a mi sueño: convertirme en Kul-Hatzker.

Carrera de programación. Capítulo 2. Escuela o autoeducación
Enciclopedia UNIX: uno de los primeros libros que leí

Gasté todo el dinero que me dieron mis queridos abuelos y padres en libros. El siguiente libro fue C++ en 21 días. El título me pareció muy atractivo y por eso no miré otros libros de mayor calidad. A pesar de esto, todas las fuentes fueron copiadas del libro en aproximadamente este período de 3 semanas y ya entendí algo en C++. Aunque probablemente ya no entendí nada de lo que estaba escrito en estos listados. Pero hubo avances.

Si me preguntaran qué libro influyó más en su carrera, respondería sin dudarlo: "El arte de programar" - D. Knuth. Fue un recableado del cerebro. No puedo decirles exactamente cómo llegó este libro a mis manos, pero tuvo una influencia muy profunda en mi futura carrera.

Carrera de programación. Capítulo 2. Escuela o autoeducación
El arte de programar: lectura obligada

Compré libros principalmente en el mercado de la radio, que sólo abría los domingos. Después de ahorrar algunas decenas de jrivnia para el desayuno, fui a buscar un nuevo libro sobre C++ o tal vez sobre Perl. La elección era bastante amplia, pero no tenía un mentor, así que estudié todo. Le pedí al vendedor que me recomendara algo sobre programación. Y que yo recuerde, sacó “El arte de programar” del estante. Primer Volumen". Era evidente que el libro ya había sido utilizado. Las esquinas de la portada estaban dobladas y se veía un gran rasguño en la parte posterior, exactamente donde Bill Gates había dejado su reseña: “Si lees este libro, definitivamente deberías enviarme tu currículum”, firmado por él. Conocía a Gates por las revistas y pensé que sería bueno enviarle un currículum, a pesar de que todos los Hackers lo criticaban. El libro costó 72 UAH. ($15), y rápidamente corrí a casa en tranvía para estudiar material nuevo.

Por supuesto, no podía entender cuán profundas y básicas eran las cosas que leía cuando tenía 15 años. Pero traté diligentemente de completar cada ejercicio. Una vez incluso logré resolver correctamente un problema con una dificultad de 25 o 30. Era un capítulo sobre inducción matemática. Aunque no me gustaban las matemáticas escolares y no las entendía bien, estaba por encima del tapete. El análisis de Knuth: estuve sentado durante horas.
A continuación, en el segundo capítulo había estructuras de datos. Estas imágenes e imágenes de listas enlazadas, árboles binarios, pilas y colas todavía están ante mis ojos. En mis 12 años de carrera en desarrollo comercial, he utilizado la mayoría de los lenguajes de propósito general.
Estos son C/C++, C#, Java, Python, JavaScript, Delphi. Y no importa cómo se llamara el lenguaje, su biblioteca estándar contenía estructuras de datos y algoritmos descritos por Donald Knuth en su libro de tres volúmenes. Por tanto, aprender algo nuevo no lleva mucho tiempo.

El primer volumen fue devorado con bastante rapidez. Reescribí los algoritmos dados en el libro de Knuth en lenguaje C. No siempre funcionó, pero cuanto más practicaba, mayor claridad obtenía. El celo no faltó. Habiendo terminado con el primer volumen, sin dudarlo corrí a comprar el segundo y el tercero. Dejé el segundo a un lado por ahora, pero tomé el tercero (Clasificación y Búsqueda) a fondo.
Recuerdo muy bien cómo llené un cuaderno entero, “interpretando” algoritmos de clasificación y búsqueda. Al igual que con las estructuras de datos, la búsqueda binaria y la clasificación rápida se visualizan en mi cerebro a la velocidad del rayo, recordando cómo se ven esquemáticamente en el tercer volumen de Knuth.
El látigo se leyó por todas partes. E incluso cuando me hacía a la mar, sin una PC cerca, todavía escribía algoritmos en un cuaderno y ejecutaba secuencias de números a través de ellos. Todavía recuerdo cuánto dolor me costó dominar heapsort, pero valió la pena.

El siguiente libro que tuvo una fuerte influencia en mí fue “El Libro del Dragón”. También es "Compiladores: principios, tecnologías, herramientas" - A. Aho, R. Seti. Le precedió Herbert Schiltd, con tareas avanzadas en C++. Aquí es donde se unieron los puntos.
Gracias a Schildt, aprendí a escribir analizadores e intérpretes de idiomas. Y luego el Libro del Dragón me impulsó a escribir mi propio compilador de C++.

Carrera de programación. Capítulo 2. Escuela o autoeducación
Libro del Dragón

En ese momento, ya me habían proporcionado una conexión a Internet con módem y pasé mucho tiempo en el sitio más popular para programadores: rsdn.ru. C++ dominó allí y todos los profesionales podían responder preguntas que yo no podía resolver. Me dolió y lo entendí.
que estoy lejos de estos tipos barbudos, por lo que necesito estudiar el interior de las ventajas de "Desde y Hasta". Esta motivación me llevó a mi primer proyecto serio: mi propio compilador del estándar C++ de 1998. Puedes encontrar una historia y fuentes más detalladas en esta publicación. habr.com/es/post/322656.

Escuela o autoeducación

Pero volvamos a la realidad fuera del IDE. Aunque en ese momento me estaba alejando cada vez más de la vida real y sumergiéndome en la virtual, mi edad y las normas generalmente aceptadas me obligaron a ir a la universidad. Fue una verdadera tortura. No tenía absolutamente ninguna idea de lo que estaba haciendo en este establecimiento y por qué estaba escuchando esta información. Tenía prioridades completamente diferentes en mi cabeza. Aprendiendo Visual Studio 6.0, probando con WinApi y Delphi 6.
Un sitio maravilloso, firststeps.ru, que me permitió alegrarme de cada paso que daba, aunque no entendía el panorama general. Por ejemplo, en la misma tecnología MFC o ActiveX.
¿Qué pasa con la universidad? Fue una pérdida de tiempo. En general, si tocamos el tema de los estudios, estudié mal. Hasta el sexto grado fui un excelente estudiante, luego obtuve calificaciones C, y en el octavo y noveno grado a menudo me saltaba las clases, por lo que recibía cinturones ilusorios de mis padres.
Por eso, cuando llegué a la universidad, tampoco había mucho entusiasmo.
- ¿Dónde está la programación? Me hice una pregunta. Pero no estuvo allí en la primera mitad del año. Pero había informática con MS-DOS y Office, además de materias de educación general.

Además de eso, tenía una personalidad introvertida y era muy modesta. Este nuevo grupo variopinto claramente no inspiraba confianza. Y fue mutuo. Por tanto, diversos tipos de burlas no se hicieron esperar. Lo soporté durante mucho tiempo, hasta que no pude soportarlo y le di un puñetazo en la cara a uno de los infractores en plena clase. Sí, entonces se fue volando a su escritorio. Gracias a mi padre, él me enseñó a pelear desde pequeño y, si realmente quisiera, podía usar la fuerza física. Pero esto sucedió muy raramente; más a menudo soporté el ridículo, esperando el punto máximo de ebullición.
Por cierto, el agresor, muy desconcertado por lo que estaba sucediendo, pero aún sintiendo su superioridad, me retó a una pelea de represalia. Ya en el terreno baldío detrás de la institución educativa.
No se trataba de un gesto de puños de los niños, como ocurría en la escuela. Había un majach noble con la nariz rota y mucha sangre. El tipo tampoco era un tipo tímido y hábilmente lanzaba ganchos y ganchos. Todos siguieron vivos y desde entonces nadie me ha acosado más.
en esta "escuela para programadores". Pronto perdí por completo las ganas de ir allí. Por lo tanto, dejé de ir allí y ninguna amenaza de mis padres tuvo ningún efecto en mí. Por algún milagro, mi estancia en la universidad se contó para el décimo grado de la escuela y tenía derecho a ir al undécimo.

Todo estaría bien, pero el undécimo grado resultó no ser mucho mejor que la universidad. Regresé a la escuela de mi casa, conocí a algunos chicos que conocía con quienes había estudiado desde primer grado y esperaba que todo estuviera bien en mi ciudad natal. Sólo había un matiz: los chicos parecían más bandidos de series de televisión que los chicos con los que era amigo en la escuela primaria. Todos acudieron en masa al gimnasio para ganar masa muscular. Me parecía al bambú. Larguirucho y muy delgado. Por supuesto, un compañero de clase tan matón podría atarme con una mano izquierda.
Esto es lo que empezó a suceder con el tiempo. Aquí mis habilidades de lucha ya no tuvieron ningún efecto. Las categorías de peso eran muy diferentes para mí y para el resto de los chicos de mi antigua clase nativa. También se hicieron sentir las peculiaridades de mi pensamiento.

Sin dejar vagar mis pensamientos, también dejé la escuela. Donde me sentí cómoda fue frente a un monitor de computadora, con la puerta de mi habitación cerrada. Tenía sentido e intuitivamente sentí que estaba haciendo lo correcto. Y esta escuela es una actividad inútil, y ni siquiera soportar esas burlas, que cada día se hacían más sofisticadas... Ya está, ya he tenido suficiente.
Después de otro conflicto en clase, conmigo como protagonista, dejé la escuela y nunca más volví.
Durante aproximadamente 3 meses me senté en casa y dediqué mi tiempo libre a aprender C++/WinAPI/MFC y rsdn.ru.
Al final, el director de la escuela no pudo soportarlo y llamó a casa.
- “Denis, ¿estás pensando en estudiar? ¿O te irás? Decidir. Nadie te dejará en el limbo”. - dijo el director
“Me iré”, respondí con confianza.

Y de nuevo, la misma historia. Me quedaba medio año para completar mis estudios antes de graduarme de la escuela. No me dejes sin corteza. Mis padres se dieron por vencidos conmigo y me dijeron que fuera a negociar yo mismo con el director. Llegué al director de la escuela. Me gritó que me quitara el sombrero cuando entré. Luego preguntó con severidad: "¿Qué debo hacer contigo?" Francamente, yo mismo no sabía qué hacer. Estaba bastante contento con el estado actual de las cosas. Finalmente tomó la palabra:
- “Entonces hagamos esto. Haré un acuerdo con el director de nuestra escuela nocturna y tú irás allí”.
- "Sí"

Y la escuela nocturna era un verdadero paraíso para los freestylers como yo. Ve si quieres o no vayas. Había 45 personas en la clase, de las cuales sólo 6-7 asistieron a clases. No estoy seguro de que todos los de la lista estuvieran vivos y libres. Porque sólo en mi presencia los compañeros robaban la moto de otra persona. Pero el hecho siguió siendo un hecho. Podría mejorar mis habilidades de programación de forma ilimitada e ir a la escuela cuando realmente lo necesitara. Terminé terminándolo y aprobando mis exámenes finales. No exigieron mucho e incluso tuvimos una ceremonia de graduación. La graduación en sí misma es una fábula aparte. Recuerdo que los bandidos locales y mis compañeros de clase me quitaron el reloj. Y tan pronto como escuché mi apellido, durante la presentación de certificados, corrí al trote para sacar el documento y salí volando de la escuela como una bala, para no tener más problemas.

El verano estaba por delante. Con Donald Knuth bajo el brazo en la playa, el mar, el sol y la fatídica decisión de escribir su propio gran proyecto (compilador).
To be continued ...

Fuente: habr.com

Añadir un comentario