¿Cuál es el mejor lenguaje de programación para aprender a hackear? ¿Cuáles son algunos libros para principiantes?

Veo que muchas personas sugieren que una persona siempre debe comenzar con C para aprender a programar. Pero antes de sugerir a nadie, las personas deben darse cuenta de que si esa persona que está siguiendo el consejo realmente encontrará motivación en los lenguajes de programación si comienza con C.

Mira, la programación debería ser divertida. Uno debería ver el poder que traen los lenguajes de programación y lo que pueden lograr con él en su futuro.

No es cierto para muchos, pero sigue siendo cierto para la mayoría, comenzar con C es muy desalentador para una persona que no sabe nada de lenguajes de programación de antemano. En cambio, uno debería comenzar con lenguajes como Python, Perl, etc. (sugiero Python).

Razones:
1.Idiomas como Python, en realidad pueden aportar el elemento de diversión en la programación.
En realidad, puede mostrar lo que una persona puede lograr en solo unas pocas líneas de código.
Sólo tipo
imprimir ‘Hola mundo!’ en Python y estás listo para ir en comparación con C:

#include

int main ()
{
printf (“Hola mundo \ n “);
devuelve 0;
}

Ahora ve y explícale esto a un niño de 13 años que quiere aprender a programar lo que es:
1.stdio.h
2.lo que es principal, sus llaves comunes, por qué es necesario, por qué esas llaves.
3. ¿Qué es esa cosa de ‘retorno 0’ y bla, bla, bla?

Por otro lado, un niño realmente puede relacionarse con la palabra ‘imprimir’ en Python como: ‘Ok’, ‘imprimir’ significa imprimir para que imprima algo ‘. Eso es. No tiene que hacerle entender todos los conceptos básicos de los detalles de bajo nivel del compilador solo desde el principio.

Primero traiga la MOTIVACIÓN en él para aprender programación. Él / ella debe disfrutar de la programación primero en lugar de romper la cabeza en punteros.

Para aquellos que piensan que los principios básicos de la arquitectura C / compilador / computadora son muy importantes al principio, intente sugerir ‘lenguaje ensamblador’ a los niños en la escuela que aún no saben nada sobre programación.

La razón por la cual muchas personas en todo el mundo ahora son programadores se debe a que lenguajes como Perl, Python, Javascript, Node.js, etc., hicieron que la programación fuera divertida y fácil de aprender.

A menudo solía responder a Python a esta pregunta, y sigue siendo una buena respuesta general. Pero a lo largo de los años, para ser honesto, me desvié de Python y, al pensarlo e interactuar con algunas personas que aprenden lenguajes de programación que no son los primeros, creo que ahora diría C #, a menos que su enfoque de Microsoft sea un problema.

Mi razonamiento es que es fácil aprender un lenguaje de tipo dinámico una vez que entiendes el tipo estático, mientras que solo conocer los tipos dinámicos es realmente perjudicial para aprender un lenguaje de tipo estático. Es decir, en mi opinión, es mejor comenzar con un lenguaje tipado estáticamente, si uno se toma en serio aprender a programar.

C y C ++ son los primeros lenguajes porque no son lo suficientemente seguros para los niños como para principiantes, tienen demasiados bordes afilados y partes puntiagudas para cortarse. Elijo C # sobre Java básicamente porque

  1. C # es un lenguaje un poco mejor y
  2. WinForms es mucho mejor para principiantes, o cualquier otra persona, que Swing o AWT.

Elijo C # sobre Swift porque es más maduro y, de nuevo, crear una aplicación GUI para .Net va a ser más fácil en C # que con el marco de Apple.

También debo señalar que se puede argumentar que uno debe comenzar con un lenguaje funcional: Esquema, por ejemplo, el primer idioma histórico del MIT. Hay algo que decir sobre este enfoque, pero si su interés es crear cosas, no ciencias de la computación u otras preocupaciones pedagógicas, creo que debería comenzar con un lenguaje imperativo.

Hay muchas respuestas diferentes a tal pregunta. Algunos dirían C o Java, otros dirían JavaScript o Python. He estado expuesto a Python, Java y C. He visto un poco de JavaScript, pero no sé lo suficiente para comentarlo.

Para empezar, recomendaría la Programación C. Aunque no está orientado a objetos como Java o Python, es un buen lugar para comenzar, porque la estructura y la sintaxis del lenguaje le enseñan cómo organizar adecuadamente su secuencia de código. La sintaxis no es tan fácil como Python, pero si sabe codificar en C, puede elegir fácilmente otros lenguajes como Java y Python. Además, el lenguaje C se usa en muchas aplicaciones en estos días. Los sistemas operativos, editores de texto, juegos e incluso bases de datos utilizan alguna forma de C (por ejemplo, C ++, C # y Objective-C). Por lo tanto, si comienza a conocer C y luego profundiza en él, puede comenzar su carrera como desarrollador / ingeniero de software sólido.

Python también se considera un buen lenguaje para principiantes porque la sintaxis es muy fácil de leer, aprender y mantener. También hay una gran comunidad que admite Python, por lo que puede acceder fácilmente a Quora o Stack Overflow para obtener respuestas a sus preguntas. Mi única preocupación con Python es que su simplicidad también puede ser su debilidad. Una vez que te acostumbras a la simplicidad de Python, puede ser difícil elegir algunos de los lenguajes más complejos, como Java o C. Y por más difícil, me refiero a envolverte en la estructura del código, las palabras clave y la sintaxis. Sin embargo, Python es tan útil como C o Java, y aprenderlo puede ser igual de beneficioso.

Por mucho que odie Java, todavía tengo que decir que Java es el mejor lenguaje hasta la fecha para las personas que comienzan a aprender programación, especialmente la programación orientada a objetos.

Aquí es por qué:

  1. Java tiene una sintaxis simple y limpia, demasiado detallada, pero fácil de aprender.
  2. Java es un lenguaje de tipo estático, por lo que le enseña sobre diferentes tipos de datos en la programación. Le ayuda a comprender conceptos de programación que no están disponibles y no son necesarios en lenguajes de tipo dinámico. Necesita saber esas cosas para tener una buena base en la programación.
  3. Java no permite la herencia múltiple (la herencia múltiple se puede lograr a través de las interfaces). Separa la interfaz, la clase abstracta y la clase de una manera limpia y detallada. Por lo tanto, es más fácil para los principiantes aprender sobre Jerarquía de objetos.
  4. Java no tiene administraciones de memoria de bajo nivel, por lo que los programadores no tienen que preocuparse por liberar memoria y pérdida de memoria (más o menos).
  5. Los conceptos sobre algoritmos y estructuras de datos se pueden enseñar muy claramente en Java.
  6. Los patrones de diseño de OOP se pueden ilustrar de manera muy clara y limpia en Java.

Pero una vez que termine con Java y aprenda todos los conceptos para aprender sobre algoritmos, estructuras de datos, patrones de implementación, patrones de diseño de OOP, por el amor de Dios, no se quede con Java .

Los frameworks y bibliotecas de Java como J2EE, Spring, Hibernate, Struts están escritos por idiotas que no saben nada sobre programación elegante. Crean jerarquías de objetos engorrosos con mucho código repetitivo redundante entre capas para lograr algunas cosas.

He trabajado con Java y J2EE durante más de 10 años, en algunos de los mayores software empresariales de Java del mundo, como Windchill y FlexPLM, así que sé de lo que estoy hablando. Dejé Java hace 10 años para Ruby, y nunca he mirado atrás.

Debes pasar a mejores idiomas, como Python, Ruby, Elixir o Go. Y si desea escribir una aplicación basada en la web, también tiene que aprender algo de JavaScript, terrible, pero es necesariamente malo, porque los navegadores web solo entienden JavaScript.

Después de convertirte en un programador pateador, si quieres convertirte en un programador real de código duro, definitivamente debes aprender C y C ++. No es necesariamente que trabaje profesionalmente con C o C ++, pero le brindarán una gran cantidad de información sobre las interacciones software + hardware y la programación de bajo nivel.

Y NO le creas a los idiotas que te dicen “Un lenguaje de programación es solo un lenguaje. Lo importante es lo que escribes ”. Por supuesto, un lenguaje de programación NO ES solo un lenguaje.

Hola,

La programación no es una gran cosa, pero necesita una concentración total en ella. Debe comenzar con lenguajes básicos como C y C ++. Puede aprender estos idiomas a través de tutoriales o videos en línea. Estas cosas aclararán su concepto, si tiene alguna consulta, puede preguntarla en el cuadro de comentarios del video, recibirá una respuesta instantánea de los usuarios.

Soy un desarrollador de aplicaciones iOS, si quieres ser el mismo, puedes desarrollar una aplicación ahora mismo, sin tener mucho conocimiento de codificación. Como hay muchas plataformas de desarrollo de aplicaciones disponibles que proporcionan codificación automática, funciones de arrastrar y soltar y muchas más herramientas útiles.

He desarrollado aplicaciones con Phonegap, Telerik, App Builder, Configure.IT y muchas más. Según mi experiencia, configure.IT es el mejor debido a las siguientes características de esta herramienta,

Instalación de arrastrar y soltar
Desarrollo de aplicaciones sin codificación
One Click API Connect
Puede usar directamente el archivo .PSD para la interfaz de usuario, no es necesario diseñar la interfaz de usuario manualmente.

Espero que mi respuesta pueda ayudarte.

125 vistas • Escrito 24 jul

Hola,

El último informe de TIOBE evalúa la popularidad de los lenguajes de programación utilizando la cantidad de ingenieros calificados y las clasificaciones de los motores de búsqueda. Los resultados:

  1. Java
  2. do
  3. C ++
  4. C#
  5. Pitón
  6. PHP
  7. La red de Visual Basic
  8. JavaScript
  9. Lenguaje ensamblador
  10. Rubí
  11. Perl
  12. Delphi
  13. VisualBasic
  14. Rápido
  15. MATLAB
  16. Pascal
  17. Maravilloso
  18. C objetivo
  19. R
  20. PL / SQL

TIOBE afirma que su gráfico no es un indicador de idoneidad o el número de líneas escritas. Algunos idiomas surgen porque todavía se usan y son relativamente más antiguos que otros. Hay algunas sorpresas: ¿VisualBasic sigue siendo popular? Raramente lo usan los desarrolladores profesionales, pero podría ser que muchas personas lo usen para aplicaciones ad-hoc simples. Dicho esto, no conozco a nadie que haya usado lenguaje ensamblador durante muchos, muchos años.

Informe de hackers estudiantiles DevPost, enero de 2016

El informe DevPost analiza el trabajo de 13,281 estudiantes que participaron en casi 10,000 proyectos durante el año académico 2014-2015. Los resultados muestran las tecnologías utilizadas, aunque se entremezclan con lenguajes de programación:

  1. HTML / CSS
  2. JavaScript
  3. Pitón
  4. Java
  5. C / C ++
  6. PHP
  7. C objetivo
  8. C#
  9. Rápido
  10. JSON
  11. Rubí
  12. XML
  13. Ajax
  14. Cáscara
  15. Procesando
  16. Lua
  17. CoffeeScript
  18. Ir
  19. MATLAB
  20. OpenGL

Los resultados destacan principalmente en qué están trabajando los estudiantes en su tiempo libre. Los proyectos tienden a estar dominados por aplicaciones nativas, microcontroladores integrados y wearables, que pueden ser tecnologías bastante específicas en el mundo empresarial. Además, estos son idiomas que los estudiantes querían usar. ¡Si eran viables o agradables es otra cuestión!

¡Aprende a programar hoy!

Voy a decir esto claramente. Otra vez:

nunca elija un idioma de los resultados de la encuesta

Sería como elegir vivir en un pueblo en particular porque tiene una población más alta que otras. Estas estadísticas son interesantes, pero no lo ayudan a elegir el idioma más apropiado para su situación, requisitos del proyecto u objetivos profesionales.

Olvídate de elegir un idioma y comienza a codificar algo . No importa lo que elijas. Aprenda los conceptos básicos y la mayoría de los otros idiomas se convierten en una sintaxis alternativa.

… pero no esperes convertirte en un experto de inmediato

Los desarrolladores a menudo hacen que la codificación parezca fácil, pero cualquier cosa parece fácil una vez que la has aprendido. Desafortunadamente, nuestra industria tiene una tendencia a subestimar el desafío.

¿Alguna vez has visto libros o cursos titulados “Aprender ingeniería aeronáutica en 21 días” o “Construcción de puentes para idiotas” ? Por supuesto que no, pero los buenos desarrolladores pasarán el mismo tiempo aprendiendo su oficio. La principal diferencia es que el desarrollo tiene una barrera de entrada más baja, y es menos probable que lastimes a alguien con código de mala calidad … ¡a menos que tu software se use para diseñar aviones o puentes!

La codificación es difícil. Podrá crear algunos programas simples en cuestión de días, pero necesitará muchos meses de conocimiento para abordar con confianza una aplicación grande. La mayoría de los trabajos profesionales requieren varios años de sólida experiencia. Incluso entonces, siempre estás aprendiendo. Todos miramos hacia atrás a los programas cuidadosamente construidos desarrollados hace seis meses y pensamos “¿quién escribió esas tonterías?”

¿Puedes convertirte en desarrollador?

Absolutamente, pero relativamente pocas personas lo harán . Si el trabajo fuera fácil, la demanda de los desarrolladores nunca excedería la oferta. Sin embargo, no creo que los desarrolladores nazcan con habilidades de codificación innatas. Cualquiera puede aprender a programar. Al igual que cualquiera puede aprender a tocar la guitarra o hablar japonés … si están preparados para esforzarse.

La clave es la pasión. Si está entusiasmado por ver su nombre en la pantalla o mover una gota verde de un punto a otro, la programación podría ser para usted. Los mejores desarrolladores están motivados por tareas y en su mayoría son autodidactas. La educación, los libros y los cursos te ayudarán, pero solo aprendes codificación al hacerlo.

¿Donde debería empezar?

SitePoint es principalmente un recurso de desarrollo web, pero la web es un entorno hostil para principiantes. Incluso si te concentras en el desarrollo del lado del cliente, no llegarás lejos sin un conocimiento de los navegadores, HTML y CSS (¡no son lenguajes de programación y son considerablemente más extravagantes!) Aquí hay introducciones sólidas a HTML y CSS de nuestro Premium colección de contenido

El desarrollo nativo del sistema operativo en algo como Java o C # no es mucho más fácil. Puede haber menos dependencias, pero los principiantes y las herramientas necesarias para ponerse en marcha engañan a muchos novatos. Un largo paso de compilación, que traduce su código en algo que la computadora puede entender, no es propicio para el aprendizaje.

Un lenguaje interpretado como Python, Ruby (tenemos una gran introducción) o JavaScript (en Node.js) (ídem) puede ser una mejor opción, pero algunos están intimidados por la línea de comandos. También es difícil crear algo gráficamente interesante para mantener su entusiasmo.

Los entornos de desarrollo modernos son complejos y la curva de aprendizaje inicial es empinada. Estoy mostrando mi edad, pero me considero afortunado de haber aprendido la codificación en un ZX Spectrum en Sinclair BASIC. La elección era limitada, al igual que la memoria y las capacidades, pero me permitió comprender los conceptos básicos (de BASIC y codificación) sin quedar empantanado en una pila de tecnologías relacionadas.

Nunca volveremos a los días más simples de 8 bits, pero hay una serie de entornos BÁSICOS que podrían ayudarlo a presentarle los conceptos de estructura de código, variables, bucles y ramificaciones, por ejemplo, Basic para Qt, SmallBasic, Basic256 o el antiguo QBasic . Los desarrolladores presumidos regañan a BASIC porque puede enseñar malas prácticas, pero escribir unas pocas líneas de código terrible te enseñará más que no escribir ninguna.

¿Puedo convertirme en un gran codificador?

Sí, a tiempo . Los mejores codificadores pasan por varias fases en su viaje de programación:

  1. La fase “No sé nada” Todo es nuevo, nada es fácil.
  2. La fase “está empezando a tener sentido” Has escrito algunos programas y estás cometiendo menos errores.
  3. La fase “Soy invencible” Su confianza coincide con su competencia. Ningún desafío parece demasiado difícil.
  4. La fase “No sé nada”, parte II. La repentina comprensión de que el desarrollo es infinitamente más complejo y comienzas a dudar de tus propias habilidades.
  5. La fase “Sé un poco y eso está bien” Tienes habilidades de codificación decentes pero reconoces tus limitaciones y puedes encontrar soluciones a la mayoría de los problemas (incluso si eso significa contratar a otro desarrollador).

En mi experiencia, la principal diferencia entre buenos desarrolladores y grandes desarrolladores es la curiosidad . Un gran desarrollador nunca se contenta con unir componentes preescritos. Quieren entender cómo funcionan las cosas. Completar una tarea en el menor tiempo posible es de menor importancia.

Considere escribir sus propias bibliotecas antes de usar el trabajo de otra persona. Por ejemplo, escriba sus propias funciones de manipulación DOM de JavaScript u objetos de conectividad de base de datos PHP. El uso de jQuery o un ORM le permitirá producir algo más rápido, pero comprender la tecnología subyacente es invaluable. La reutilización del código se vuelve cada vez más importante, pero no tenga miedo de profundizar mientras aprende.

Finalmente, nunca tengas miedo de elegir el idioma equivocado … no hay ninguno equivocado . Hay aquellos que no se adaptan mejor a un proyecto específico, pero solo lo descubrirá por prueba y error. Elige un proyecto interesante, elige cualquier idioma y ponte en marcha.

¡La mejor de las suertes!

Respuesta original: la respuesta de Stefy Biber a ¿Cuáles son los mejores lenguajes de programación para aprender en 2014?

Oracle Java es uno de los lenguajes de programación más antiguos, persistentes e influyentes de la web. Encontrará Java en el núcleo de las aplicaciones dentro y fuera de la web, en todas las plataformas, sistemas operativos y dispositivos. Es un lenguaje de programación basado en clases y orientado a objetos que está diseñado para ser portátil y viable en tantas plataformas como sea posible. Por esa razón, también es uno de los lenguajes de programación más populares del mundo, lo que lo hace increíblemente valioso para aprender si estás interesado en aprender a programar. La otra cara de Java es que, a pesar de su portabilidad y aplicabilidad, puede ser bastante difícil de entender y bastante difícil de programar de manera efectiva y eficiente.

Sin embargo, Java no es un lenguaje de programación perfecto: muchas escuelas y clases comienzan con C o C ++ porque Java obtiene gran parte de su sintaxis de esos lenguajes anteriores. Aquellos de ustedes que defendieron Java como un buen primer idioma notaron que Java los obliga a pensar como un programador, a pensar de manera lógica y analítica, y realmente comprender cómo una computadora procesará la información para tener éxito. Es un conjunto fundamental de conceptos básicos que lo ayudarán a medida que avanza a otros idiomas y tecnologías. Por más razones por las que es una buena opción, eche un vistazo a su hilo de nominación.

Scratch: si eres joven, esto sería perfecto para estimular la lógica en la programación. Arrastrar y soltar es suficiente para enseñar la lógica detrás de cómo funciona el flujo de programación.

Python: este es un comienzo bueno y fácil para la programación competitiva y es uno de los lenguajes más fáciles de aprender. Su sintaxis es agradable y simple sin giros y vueltas difíciles. Este también es un muy buen comienzo para la programación competitiva y puedes simplemente sumergirte en el primer problema en CodeForces, SPOJ, CodeChef, una vez que entiendas la sintaxis de Python.

Swift: esta es la revolución detrás de los juegos móviles. Esto es realmente similar a C #, que pretende mantener la programación simple. Swift es realmente bueno para aplicaciones móviles, sin embargo, solo funciona para productos Apple. Sin embargo, es una de las mejores formas de iniciar el ingenio de su aplicación móvil.

Otros idiomas que recomendaría:

  • JavaScript : este es el lenguaje front-end de más rápido crecimiento que se utiliza en todo el mundo. Echa un vistazo a Free Code Camp para comenzar a aprender JavaScript.
  • C ++ : si realmente quieres un desafío, no es fácil de aprender de inmediato. Sin embargo, este es un lenguaje muy bueno si quieres hacer una programación competitiva.

Gracias por preguntar, Sergey!

No hay una forma definida de Arte de piratear. No se puede enseñar. ¡Período!
Puedes unirte a cualquier curso en el campo que diga que aprenderás a hackear en X días, pero lo único que hacen es demostrar qué hackeos se han “usado”. Y por ‘ya usado’ quiero decir que esos hacks no funcionarán en la mayoría de los sistemas ya que las compañías se esforzarán por solucionar el hack tan pronto como se haya establecido. Entonces, aprender de libros y cursos significa que estás aprendiendo cosas viejas que nunca funcionarán. Por lo tanto, enfóquese en mejorar las cosas que puede hacer.
Aprende todos los idiomas que puedas. Porque cuando se ataca una máquina, puede usar idiomas que la computadora puede entender y no el que usted conoce. Para hacer un ataque de Python, el sistema víctima necesita un compilador de Python. De lo contrario, su código no se ejecutará.
Aprenda sobre sistemas operativos, redes, etc.

Es un largo camino para llegar a ser un hacker y no todos lo logran.

Voy a decir el caparazón Bourne. El scripting de Shell es enormemente útil y mucha gente es mala en eso. Puede crear prototipos de programas “reales” al unir las utilidades de UNIX. El shell Bourne se ejecuta en todas partes, a diferencia del bash más popular que usa la mayoría de la gente.

Haskell es otra opción. Aprende todos los demás lenguajes de programación en el contexto del primero. Aprender Haskell probablemente no te conseguirá un trabajo. Le enseñará las habilidades para aprender otros idiomas que le permitirán obtener un trabajo. Como beneficio adicional, podría decirse que la programación funcional es más fácil de acceder a otros tipos de programación si es un principiante completo.

Javascript es otra buena opción. Todo lo que necesita es su navegador y seguramente necesitará aprenderlo tarde o temprano.

Si quieres ir a la vieja escuela, aprende C seguido de ensamblador. Ensamblador ARM si tiene la intención de hacer trabajo móvil o incrustado. x86 si tiene la intención de hacer el trabajo del lado del servidor. Estos idiomas le enseñarán cómo funciona la computadora bajo el capó.

He contribuido como asistente junior en el curso inicial de CS muchas veces y he visto a personas aprender a programar con C, Java, Pascal y otros. Esto es lo que encontré:

  • No comience con algo de “nivel demasiado bajo”, como C. Los principiantes pasarán más tiempo luchando contra la sintaxis y la semántica del lenguaje que pensando cómo resolver el problema en cuestión.
  • No elija un lenguaje “popular” simplemente porque cree que terminará trabajando con él. Aprenda al menos dos idiomas antes de comenzar a trabajar con la programación. Las personas que solo conocen un idioma tienden a confundir cuál es el concepto teórico y cuál es la forma en que este concepto se aplicó en ese idioma en particular.

Entonces, mi sugerencia es Python . Es un lenguaje bien diseñado, con una sintaxis muy regular, fácil de comenzar, una curva de aprendizaje rápida y constante (que lo mantendrá motivado) y con muchas bibliotecas excelentes para todo lo que quiera jugar.

No aprendas un idioma. Elija un proyecto, descubra los idiomas que se utilizan para proyectos similares y luego aprenda lo suficiente del idioma para realizar el proyecto.

Este enfoque le permite construir algo de inmediato y le brinda pequeños sentimientos continuos de logro: su código hace algo que no hizo ayer, y se está acercando a cómo cree que debería funcionar el código.

La alternativa es aprender un idioma: muchas curiosidades para memorizar, ninguna de las cuales tiene un contexto particular o relevancia para lo que quieres hacer. Seis meses a partir de ahora lo habrá olvidado todo, a menos que lo esté usando para construir cosas que le importan.

Solo comienza a construir.

Actualización : un par de personas me han pedido proyectos. Aquí estaba mi respuesta (¿eliminada?) En los comentarios:

Complete el espacio en blanco: “¿No sería genial si _______?”

Me enseñé cómo programar porque quería dibujar fractales en mi pantalla. Nada más profundo que eso.

Mi proyecto universitario consistía en hacer un análisis estadístico del uso de palabras en el cuarto de 1597 de Richard III de Shakespeare. Mi proyecto de MS estaba escribiendo un intérprete de JavaScript para un navegador web basado en ascii. Me fue muy bien en mi Ph.D. entrevistas porque quería saber exactamente cómo funcionaba gcc, así que pasé un verano desarmándolo lentamente.

Un proyecto que se me ha escapado hasta ahora es una exégesis completa de “¡Hola, mundo!” ¿Cómo se traduce el código C en ensamblado? ¿Qué hace cada byte del binario? ¿Cómo interactúa el shell con el cargador para iniciar el programa? ¿Qué partes del núcleo se tocan durante su ejecución? ¿Cómo llega la salida del núcleo a la tarjeta gráfica a la pantalla?

Le di un proyecto a un estudiante de pregrado este verano que no era más que “Haz que este simple código de matriz multiplicada se ejecute lo más rápido que puedas, sin reglas, haz lo que tengas que hacer y luego prueba que no puede ejecutarse más rápido”.

¿Cómo mejoraría los algoritmos evolutivos para motores de ajedrez desarrollados hace una década en computadoras mucho más lentas? ¿Cómo haría para detectar la edición paga y el astroturfing en wikipedia utilizando el aprendizaje automático? ¿Cómo puede hacer que el rendimiento sea determinista en Linux (o es que eso no es posible)? ¿Cómo puede asignar simulaciones físicas existentes a GPGPU?

Para comenzar, simplemente tome un concepto en una caja de Linux y pregúntese “Ok, ¿cómo funciona eso / realmente /?”. Luego comience a derribarlo hasta que se aburra o llegue al firmware (y luego siga el firmware si lo desea).

Como principiante, lo más importante es aprender los conceptos de programación. Qué es una cláusula if, qué es una variable, qué son las clases, etc.

Tenga en cuenta que las personas sugerirán una variedad de idiomas y estará aún más confundido que antes de preguntar.

Sugeriría algo más. Hágase una pregunta: ¿Por qué quiere ser programador?

¿Es porque quieres hacer aplicaciones de iPhone, aplicaciones web, aplicaciones de escritorio? ¿Es porque quieres conseguir un trabajo como programador o tienes ideas y quieres hacerlas realidad?

Las respuestas a estas preguntas lo acercarán a responder su pregunta original.

Si desea crear aplicaciones para iPhone, no se pase por las ramas y comience con Swift. Si te gusta más Android, elige Java.

Si desea crear aplicaciones web, comience con Ruby (lenguaje hermoso y conciso) en Pruebe Ruby y luego eche un vistazo a algunos tutoriales de Rails (una comunidad increíble y muchas aplicaciones geniales integradas) en Code School.

Lo mismo para el escritorio: ¿quieres estar en el ecosistema MS, Apple o Linux?

Intente mirar más allá del “Quiero aprender un lenguaje de programación” y descubra por qué quiere aprenderlo.

¡Buena suerte!

Hola … Espero que esto te ayude

Tener el conocimiento previo de programación es algo que lo separará de todos los demás kiddes de script (Wanna be hackers) y otros amantes de las herramientas, muchas veces durante las pruebas de penetración se encuentra con un punto en el que necesita escribir o construir el suyo propio. scripts y programas personalizados aquí es donde el conocimiento de la programación es útil.

La otra y, con mucho, la ventaja más importante de la programación es que podrá comprender los códigos de explotación e incluso aprender a escribirlos también, aunque hay softwares que han hecho que el proceso de escritura de exploits sea mucho más simple, pero aún necesita tener una sólida comprensión de los lenguajes de programación para saber cómo funcionan los exploits.

Ahora que ha entendido la importancia de aprender lenguajes de programación, es posible que se pregunte “por dónde empezar”, “con qué lenguaje de programación ” debería comenzar a aprender, no se preocupe, he visto muchas preguntas sobre este tipo de preguntas. varias comunidades y foros de piratería, la respuesta a estas preguntas es que depende de su interés.

Piratería web


Ahora, si está interesado en el tema de webhacking, tema, le recomendaría que aprenda los siguientes idiomas:

1. HTML: comience con HTML si no lo sabe


2. Javascript: a continuación, aprenda JavaScript, que lo ayudará a comprender los fundamentos de las secuencias de comandos entre sitios que se explicarán más adelante en este libro.

3. Bases de datos SQL: debe aprender a trabajar con bases de datos, lo que le ayudará a comprender los fundamentos de los ataques de inyección SQL, que también se explicarán más adelante en este libro cuando veamos el capítulo de piratería de aplicaciones web.

4. PHP: aprender PHP debe ser una de sus primeras prioridades si desea comprender los mecanismos detrás de los ataques de piratería web. Te recomendaría que lo aprendas lo antes posible.

Fuentes recomendadas:

5. W3schools – W3schools tiene una amplia variedad de cursos de e-learning que incluyen lenguajes como PHP, HTML, JavaScripts, etc. Si no tiene conocimientos de lenguajes de programación, intente comenzar con HTML y JavaScript.

Explotar escritura


La escritura de exploits es un segmento muy difícil en la piratería, ya que requiere un conocimiento de programación puro, por lo que no le recomendaré que comience con la escritura de exploits, los exploits se pueden / pueden codificar en casi cualquier lenguaje de programación, por ejemplo, C / C ++, Python, Perl, etc. , pero más del 50% de los exploits que encontrará en la web se codificarán en lenguajes C / C ++ porque estaban presentes antes que cualquiera de los otros lenguajes. Los lenguajes como C y C ++ se consideran lenguajes de programación, mientras que los lenguajes como ruby, perl y python se consideran más como lenguajes de secuencias de comandos.

Le recomendaría que comience con los lenguajes C y luego con C ++, C / C ++ tiene muchas similitudes, por lo que si puede obtener una buena comprensión de cualquiera de ellos, puede aprender el otro fácilmente.

Rubí

Hablando de lenguajes de secuencias de comandos, le recomendaría que comience con Ruby, Ruby es uno de mis lenguajes de programación más favoritos, ya que está orientado exclusivamente a objeciones, lo que significa que todo lo que trabaja es un objeto. Ruby es realmente útil cuando se trata de explotar la escritura, Ruby se usa para codificar scripts de meterpreter y lo que podría ser mejor que el marco Metasploit en sí estuviera codificado en lenguaje ruby.

Pitón

Python también es un lenguaje de programación muy útil, también se puede usar para escribir exploits. Si optas por python primero, asegúrate de aprender la programación de socket de Python, ya que te ayudará mucho en el proceso de creación de exploits.

PERL

Hablando de PERL, también se usa ampliamente para la escritura de exploits, encontrarás muchos exploits escritos en PERL, pero el problema es que perl es realmente difícil en comparación con otros idiomas como Ruby y Python, por lo que te recomendaría que aprendas al final


Ingeniería inversa

La ingeniería inversa es un acto de manipulación de software, aplicaciones para que funcionen, si está interesado en la ingeniería inversa y el craqueo de software, entonces seguramente necesitará aprender el lenguaje ensamblador.

Si usted es serio acerca de aprender a codificar en ensamblador, le recomendaría que lea el libro de Jeff Duterman “El lenguaje de ensamblaje paso a paso “.

Esto concluye nuestro capítulo ” Hackear y programar “. Una cosa que me gustaría señalar es que aprender 10 lenguajes de programación diferentes no es un gran problema, pero dominar uno es seguramente muy difícil. Considere elegir un lenguaje de programación para aprender y asegurarse de que sigues practicándolo.

Gracias por A2A.

No soy un hacker Soy un seguidor de hackear cosas.
Una cosa que debes entender sobre el pirateo es que el lenguaje de programación es independiente de él. Es decir, no hay nada como “aprende este idioma, serás hacker”.

  1. La piratería se trata de entender “¿cómo funcionan las cosas?”
  2. Una vez que lo sabe, sabe que un sistema / subsistema en particular está funcionando. Puedes pensar en preguntas “¿Qué pasaría si? “.
  3. Al hacerlo, puede encontrar algún agujero de bucle en ese sistema. Puedes arreglarlo o manipularlo.

Por ej. Esto sucedió hace mucho tiempo.

ping ” (escriba “ping http: //www.google.com&quot ; en la línea de comandos) se basa en mensajes ICMP para verificar si el otro nodo (PC generalmente) está en la red y es accesible. [Comprensión]

Alguien pensó, ¿qué pasaría si creo muchos hilos / procesos en pocas PC más, lo que hace que un sistema en particular diga “www.yahoo.com”? Ese servidor estará ocupado respondiendo solicitudes y, por lo tanto, reduciendo su velocidad para hacer otras cosas. Este experimento fue lo suficientemente poderoso como para derribar el servidor. [Preguntando “¿Qué pasa si?”]
Nota: ahora este problema está solucionado.

Hay muchos casos como este. Recientemente hubo un error en el algoritmo de cifrado openSSL que se vio comprometido. Te sugiero que leas blogs de piratería.

Olvídate del software por un momento.
Los hackers son contratados para resolver muchos problemas del mundo real. Como luchar contra la malaria. ¿Sorprendido?
El grupo de hackers encontró una solución maravillosa que tiene como objetivo romper el “ciclo de vida” de los mosquitos, lo que ayuda a prevenir la malaria en primer lugar. Mira a continuación la interesante charla TED.

En cuanto a la elección del idioma para la piratería, los idiomas que admiten secuencias de comandos se utilizan principalmente porque uno no tiene que reinventar la rueda. Los lenguajes como Python, Perl, etc. tienen una gran oferta de bibliotecas que facilitan las cosas.
Herramientas que analizan la captura de datos o paquetes (redes) etc. para comprender cómo funcionan las cosas.

¡Gracias por leer!

Yo personalmente te recomendaría que aprendas C.

Como muchas personas ya te han recomendado Python, quiero compartir mi opinión personal sobre por qué no debería ser tu primer idioma (supongo que estás aprendiendo tu primer idioma).

Python es bueno como primer idioma si no tiene planes de aprender ningún otro idioma en un futuro lejano. Pero si quieres aprender un nuevo idioma de vez en cuando, te recomiendo que aprendas C.

C te enseña muchas cosas que quizás no aprendas en Python. Python le ofrece mucha abstracción y muchos conceptos básicos pasan de largo sin siquiera familiarizarse con usted.

Una vez que aprende C, puede aprender fácilmente Python e incluso familiares de C como C ++ y Objective C. Plus C es más rápido, lo que lo ayudará en la programación competitiva.

Yo personalmente aprendí C primero y luego aprendí Python. Porque la abstracción ofrecida por Python es realmente linda. Pero el rendimiento proporcionado por C puede hacer que el rendimiento de Python parezca una batería AAA (por supuesto, el rendimiento de C es como una bomba nuclear).

Pero si lo desea, también puede aprender Python porque después de eso es su decisión.

¡Te deseo lo mejor en tu viaje de embarque!

🙂

Te sugiero que comiences con Python. Dado que es el primer idioma, muchas universidades enseñan en el camino hacia un título de CS y hay varias razones para esto:

1. Python fue diseñado con el principiante en mente. Lo que significa que el idioma es más fácil de aprender. El lenguaje es muy legible en comparación con Java o C ++. Además, se requiere menos código para realizar una determinada tarea en comparación con otros idiomas.

2. Python es un lenguaje orientado a objetos que puede actuar como base para muchos de los otros lenguajes orientados a objetos.

3. Actualmente, los programadores de Python tienen demanda y las empresas suelen pagar a las personas que pueden programar en este idioma.

Sugeriría Real Python si quisieras aprender Python. No tengo afiliación con ellos, solo sugiero en función del excelente contenido que tienen en su material.

Es difícil para cualquier persona responder a esta pregunta porque cada idioma tiene sus ventajas y desventajas. Como resultado, realmente depende de usted, el individuo.

Para mí, se trata de comenzar con el programa en mente. Si tiene una idea increíble o un programa que le gustaría ver servir a un subconjunto específico de funciones, es mejor aprender los lenguajes de programación que mejor aborden su problema.

La razón por la que creo que esta es la forma en que se debe aprender cualquier programación es porque una idea proporciona una hoja de ruta distinta con caminos abiertos a nuevas posibilidades. Entonces, a medida que continúa construyendo su idea y completando puntos de control en la hoja de ruta, naturalmente está aprendiendo habilidades de desarrollo en el camino. Puede recoger un poco de Python aquí, y luego darse cuenta de que necesita desarrollar una base de datos PostgreSQL allí. En cualquier caso, está aprendiendo cómo implementar tecnologías tangibles.

El poder de formar sus hábitos de desarrollo a través de ideas de escala es que realmente le permite disfrutar de la construcción. Es casi como su aprendizaje discreto enmascarado con la creación de soluciones creativas para problemas del mundo real.

Desarrolle un hambre y persígala con vigor: naturalmente se sentirá consumido por la realización de esta idea; en el proceso, aprenderás de manera efectiva .

Pero si quieres una respuesta directa a tu pregunta

Pitón. La versatilidad que proporciona en casi cualquier campo computacional hace que sea difícil apostar en contra. También es bastante sencillo de aprender y no tiene demasiado peso en los conceptos orientados a objetos.

Si tiene una buena cantidad de conocimiento y comprende el concepto de un objeto de software, le daría a C ++ una mirada dura. La mayoría de los softwares desarrollados profesionalmente son impulsados ​​por él.

Comentario dirigido a Deva Surya SE –

Hackeo: aplicación de conocimientos para resolver un problema utilizando las herramientas disponibles; básicamente “Ingeniería” 101.

Su idioma de elección es simplemente una herramienta, y no está limitado a una sola. También tiene una gran cantidad de bibliotecas para elegir y aprovechar su objetivo final.

En el frente del conocimiento, mantenerse actualizado también puede darle una ventaja. ¿Sigue los últimos exploits / vulnerabilidades reportados? ¿Has probado los vectores de hackeo de PoCing? Claro, idealmente, buscas un truco de 0 días, pero debes comenzar en alguna parte.

Con comprensión, como Diganth R Murthy ha explicado, debe aplicar los conocimientos previos para intentar romper los sistemas y procesarlos en su lugar. Causar una pérdida de memoria aquí, puede ser incluso “físicamente” aplicar una sobretensión a los pines de un CI, solo para ver qué sucede o medir el resultado.

Esa es esencialmente la base de la piratería.

Ahora, para abordar su pregunta real, el “mejor” lenguaje nuevamente puede ser un poco vago. Lo más probable es que no vaya a utilizar Javascript, por muchas razones (¡aunque sí puede hacerlo!), Pero es probable que busque en lenguajes como C / C ++, Python, Erlang / Elixir, Rust, Golang, etc. La lista continúa.

Mucho depende de su plan futuro.

  • Si está buscando un trabajo inmediato, diría que vaya a Java. Java es el lenguaje más utilizado. Encontrará muchos tutoriales gratuitos y referencias para Java. Java es un buen lenguaje orientado a objetos (ahora también funcional) y le brinda una buena base. Pero para ser honesto, Java es un poco difícil de aprender.
  • Si buscas un lenguaje un poco más ligero, elige Python. Python es otro lenguaje popular y se usa ampliamente. También encontrará muchas referencias y tutoriales para Python. Python también es bueno para la ciencia de datos.
  • Si está buscando desarrollo front-end, vaya a HTML + JavaScript + PHP. La combinación es bastante popular y te ayuda a diseñar sitios web potentes.

Espero que ayude.

Feliz aprendizaje.