El mejor lenguaje de programación para principiantes para alguien interesado en la seguridad de TI [cerrado]

1

Backstory:

En este momento soy alguien con un conocimiento muy limitado en computadoras y programación, pero me gustaría cambiar eso. Descubrí que estoy principalmente interesado en la seguridad de TI y que me gustaría especialmente aprender más sobre eso (no voy a negar que Skyfall no participó en esto, pero ciertamente no es así) la razón principal) a diferencia de, por ejemplo, el desarrollo de juegos / aplicaciones y demás. No sé exactamente por qué, tal vez tenga algo que ver con el hecho de que yo mismo he sido víctima de virus y phising un par de veces.

Pregunta en sí misma:

Recientemente he decidido que me gustaría aprender mi primer lenguaje de programación. Esta decisión está separada de mi interés en la seguridad de TI, pero me gustaría que mi primer idioma sea el más útil para alguien que quiera aprender más sobre la seguridad de TI. Siento que esto sería matar 2 pájaros con 1 piedra. ¿Cuál sería este idioma y por qué?

    
pregunta OmnipresentAbsence 17.02.2013 - 18:55
fuente

1 respuesta

5

Para entender realmente la seguridad de TI (y, en general, las computadoras), tendrá que saber cómo van las cosas, así que, tarde o temprano, tendrá que aprender a ensamblar para una o dos arquitecturas (preferiblemente más de dos) . Los códigos de explotación de bajo nivel (por ejemplo, para desbordamientos de búfer) no tienen sentido a menos que se conozca el ensamblaje. Luego, continúe con C, que está muy extendido y es un target habitual para tales explotaciones. C es fácil de aprender si sabes montaje. Una vez que sepa ensamblado y C, puede aprender lenguajes más complejos (por ejemplo, C # o Java); Su comprensión del funcionamiento interno de la máquina lo guiará a través de las características más "mágicas" de dichos lenguajes avanzados. Siguiendo esta ruta, puedes probar los lenguajes de scripting, donde cada elemento del lenguaje esconde una gran cantidad de cálculos.

Este orden de aprendizaje, de nivel bajo a nivel alto, es un ideal ; Todavía tengo que conocer a una sola persona que se haya adherido estrictamente a ella. En mi propia ruta de aprendizaje, comencé con Basic ("versión 1.0", de 1984) y luego cambié al ensamblaje (en una 6809E CPU ) porque Basic era realmente demasiado lento en mi máquina (una CPU de 1 MHz no tiene mucha fuerza). Más tarde, aprendí a Pascal, luego a C y algo más de asamblea. Luego, hice mucho C, toqué muchos otros lenguajes (por ejemplo, Caml, PostScript, Prolog, Objective-C, C ++), algunos scripts (Unix sh , Perl ...) e incluso más ensamblados (en varios arquitecturas). Incluso más tarde, hice un montón de Java. También probé Forth, Scheme, un poco más de montaje. Últimamente, he hecho algunos C # (que es muy similar a Java), PowerShell, y sufrí un brote de VB.

Lo que hay que recordar es que cada idioma tiene sus peculiaridades; logrará la programación equivalente a ene si puede ver más allá de las particularidades de cualquier idioma específico y concentrarse en los algoritmos subyacentes. Conocer una gran cantidad de lenguajes y de arquitectura le ayudará mucho. También destacará qué características del lenguaje son especialmente "peligrosas" de usar, por lo que me refiero a propensas a desencadenar debilidades explotables. Por el contrario, si se adhiere a un solo idioma, solo será un mediocre profesional de la programación y la seguridad de TI.

Existen otras rutas de aprendizaje y algunas personas están contentas con ellas. Muchos programadores aprendices comienzan con algo de alto nivel como Python y solo más tarde tratamos de ver "debajo del capó" cómo la computadora realmente hace las cosas. . Tiendo a favorecer el camino de bajo a alto porque es similar al camino que yo seguí, pero no hay una necesidad absoluta en eso.

    
respondido por el Thomas Pornin 17.02.2013 - 19:40
fuente

Lea otras preguntas en las etiquetas