Comencé con el código de máquina hexadecimal. La asamblea fue un gran paso para mí. Poder codificar a ese nivel, no, tachar eso, ser REQUERIDO codificar a ese nivel fue un gran problema para mí cuando llegué a mi primer “lenguaje de alto nivel”.
Había estado haciendo mi propia E / S (byte a byte, o configurando DMA y detectando interrupciones). Había estado haciendo mi propia gestión de memoria y tenía mis preferencias sobre dónde iban las cosas. Estaría escribiendo, bueno, digamos que el código fue MUY eficiente en espacio a expensas de ser comprensible. Había estado escribiendo código para el que no había más optimizaciones, porque había trabajado en cada instrucción, cada vez que el procesador pirateaba para maximizar el rendimiento. Incluso había pensado mucho sobre las ubicaciones de la tienda de trabajo en función del tiempo del ciclo de memoria en función de qué hoja de memoria estaba activa en ese momento.
Y luego me enfrento a un lenguaje de alto nivel: PL / I
Hola2: opciones de proceso (principal);
poner lista (‘¡Hola, mundo!’);
fin Hello2;
- He borrado el primer grupo en CA IPCC y ahora quiero unirme a un artículo. ¿Cuáles son algunas sugerencias para las empresas en Delhi?
- Estoy cerca de recibir dos ofertas de trabajo: una en Texas y otra en Alemania. ¿A donde debería ir?
- Recientemente abrí un salón con mi esposa: Glam Salon y Day Spa. ¿Cuáles son algunos consejos para marketing y publicidad?
- Voy a completar mi graduación (Inf.tech) este mes de mayo. Planeando hacer EM en EE. UU. En diciembre / enero, ¿cómo puedo usar estos 6 meses productivamente?
- ¿Por qué mis auriculares Beats by Dre suenan mal cuando están conectados a la toma de auriculares de mi receptor Marantz con un adaptador de 1/8 ‘a 1/4’?
¿Qué demonios era el infierno triplemente perfecto? ¿Cómo se tradujo a algo que realmente entendí?
Estaba desconcertado. Asumiría una tarea, la examinaría en ensamblador en minutos, luego trabajaría durante horas tratando de descubrir cómo hacerlo en PL / I. Contra-intuitivo, sí, pero así fue. Finalmente dejé el curso.
Tuve suerte. Encontré, por casualidad, un libro mágico llamado “IBM System / 370 Principals of Operations”. Eso, más una tarjeta de referencia de IBM 370 Assembler, lo configuró todo bien para mí. Me di cuenta de lo que estaba haciendo este “compilador” con mi código, y estaba feliz de nuevo.
Regresé, volé la curva en la introducción al curso de programación el próximo semestre, nunca miré hacia atrás.
Lo que sucedió a lo largo de ese camino fue realmente importante: también descubrí el libro Structured Programming de Ed Dijkstra y “entendí” que mientras estaba elaborando un código de rendimiento serio, me estaba perdiendo el punto. No estaba pensando algorítmicamente, o al menos, no tanto como debería haberlo hecho. Comencé a pensar en términos de estructuras de datos, sobre las cuales se realizaban las operaciones, en lugar del código que se ejecutaba en los datos. Es un gran cambio.
Y le garantizo que si está escribiendo en ensamblador y pregunta acerca de C, no ha cruzado esa división. Es probable, como yo, autodidacta. Eso es genial y todo, me quito el sombrero, pero te lo estás perdiendo. A lo grande.
C, una vez que comprenda la importancia de las estructuras de datos y el pensamiento algorítmico, cambiará su vida. Es probable que seas un gran imbécil cuando se trata de código de rendimiento, ya que puedes activar el interruptor “-s” y mirar la salida y optimizar tu código manualmente para ayudar al compilador a producir un código mucho mejor que él nativamente se inclinaría a hacer (pista: muchas veces hacer-hasta es una victoria más grande que un enunciado while).
Pero no estás ahí. Necesitas llegar allí, para entender lo que no.
Luego, retrocede, prenderás fuego a tu mundo.