[Inicio rápido de programación]: en los lenguajes de programación

Introducción
Este es un breve ensayo sobre mi opinión sobre algunos de los lenguajes de programación modernos.
Bueno, ‘ve no ha terminado, pero decidido publicarlo tal cual y editar más tarde

Con la gran cantidad de lenguajes de programación que hay muchos de nosotros estamos confundidos sobre cuál usar para su proyecto o como idioma predeterminado de cumplir. Aquellos de nosotros que sólo comienzan su viaje por el fascinante mundo de la programación se encuentran a menudo se enfrentan a la cuestión de las eligiendo su primer idioma y yo a veces me preguntan para dar consejo.

Personalmente me gusta probar todos los otros idiomas que oigo hablar – porque me resulta fascinante imaginar de lo que sus autores estaban pensando y cómo se llegó al diseño. Además, lo que me gusta en general, en la ingeniería y es que el aprendizaje de algo nuevo es una introducción a la historia de la evolución de la industria y que te hace llegar a conocer y conocer a un montón de entusiastas increíbles. Así que pensé que había que seguir adelante y escribir una pequeña entrada en el blog acerca de los diversos idiomas que tenía experiencia y mi opinión general sobre el asunto.

TLDR:
Como de costumbre, el puesto tiene algunos enlaces para su posterior lectura en final (para que pueda desplazarse hacia abajo si estás aburrido). Si bien no considero Wikipedia una fuente fiable de información, sigue siendo muy útil, ya que permite encontrar enlaces a artículos originales y se puede obtener un conocimiento más amplio del tema con una lectura rápida a través de enlaces «relacionados».

Ahora, déjenme algunos puntos improtant digo en caso de que usted no sabía o todavía están confundidos
  • Cada algoritmo o un problema puede ser resuelto en cualquier idioma.
  • Algunos lenguajes permiten que usted pueda resolver algunos problemas en una forma más fácil
  • Algunos idiomas traer más diversión (una positiva frente a la miseria de bug-caza) en el proceso de escribir código
  • Por lo general es posible reutilizar el código escrito en otros idiomas, pero la dificultad del proceso puede variar

Popularidad . Un lenguaje popular tiene una comunidad donde usted puede hacer preguntas.

  • Soporte comercial o la madurez. Un lenguaje maduro o el respaldo de una financiación de la empresa es probable que sobreviva durante mucho tiempo y hay una posibilidad de que usted será capaz de utilizar su código sin modificar muchos años después de que ha escrito.
  • Librerías disponibles . Ok, en la mayoría de los casos usted escribe algoritmos de ti mismo, pero a veces prefieres empuja una pieza de código existente en lugar de reinventar la rueda. Es importante que existan las bibliotecas básicas para sus tareas (la interfaz de usuario, red, datos de análisis (XML / JSON), los medios de comunicación, etc) para que pueda concentrarse en la solución de su problema.
  • integración código nativo . Bueno, es el punto clave a la hora de elegir cualquier cosa en la ingeniería – lo bien que se integra en otras soluciones de uso común. Si su idioma tiene una FFI (interfaz de funciones extranjeras) que le permite volver a utilizar fácilmente las bibliotecas binarios escritos en C / Asamblea o existe un generador de código automatizado que permite enchufar el código escrito en otros idiomas – lo más probable es que se puede utilizar para la mayoría de sus proyectos. Es importante notar que algunos idiomas / plataformas (C # /. Net, Ruby / Python, Haskell) permiten importar fácilmente el código / datos nativos y especificar tipos de datos (tamaños, tipos de argumentos) directamente en el código, sin tener que escribir una biblioteca C apéndice que lo tocar las ampollas sucias del compilador o una VM (Virtual Machine) como se hace para Java y OCaml
  • Un aspecto importante a considerar es el sistema de tipos – es decir, cómo se declaran los tipos de datos y variables y cómo el compilador / intérprete comprueba la corrección de código. Podemos clasificar los lenguajes basados ​​en el sistema de tipificación usado de varias maneras:
    • dinámico (como el rubí, que permite hacer un montón de cosas en tiempo de ejecución a través de la introspección / reflexión [obtener información de tipo como las funciones disponibles y argumentos dinámicamente] al precio de tener un enorme accidente si usted comete un error tipográfico)
    • estática (haskell – donde se comprueban todos los tipos durante la compilación y hay incluso existe la opinión de que si un programa escrito en un tipo estático idioma compila, es correcto)
    • débil (conversión de tipos implícita como en JavaScript y Perl que significa que puede sumar enteros y cadenas y obtener números enteros … raro)
    • estricto (ni siquiera conversión de tipo explícita es posible – como en Haskell / ML, que permite evitar el abuso de la comprobación de tipos)
    • explícita (como C, C + +, Java) – usted tiene que definir los tipos de variables todo el tiempo (como , «int x = 1» o «float sqrt (int x) …»)
    • implícitas lenguajes de programación más funcionales (como Haskell, F # y, recientemente, C # y C + +0 x) – tipo de variable es deducida a partir del contexto [ TypeInference ]. Esto es, el compilador intenta encontrar al menos algunas de las variables para las que se puede decir del tipo de seguro. Al igual que, enteros o constantes float. Entonces se remonta sustituyendo cada vez que aparece de la variable sin tipo con el tipo de la constante que se puede utilizar allí. Algo así como funciona Hindley-Milner inferencia de tipos [ HindleyMilner ]
    Ahora, vamos a repasar algunos idiomas y discutir cada uno de ellos individualmente

    dos reglas de oro en la optimización de software :

    • Siempre perfil el software (es decir, analizar qué parte de la computación, que lleva más tiempo de rutina ) antes de tratar de optimizar. Recuerde que la cita Knuth, «la optimización prematura es la raíz de todo mal». Eso significa que usted debe ser consciente del peligro de perder mucho tiempo optimizando la parte equivocada de la realidad el programa que tiene una influencia significativa en el rendimiento.
    • Si alguna optimización le da un aumento lineal en el rendimiento, olvidar al respecto. Usted puede obtener la misma optimización por no hacer nada y simplemente esperando una próxima generación de CPUs a salir en medio año. Si realmente, realmente necesita rendimiento, empezar por tratar de disminuir la complejidad algorítmica
    C
    Ahora, quieras o no, lo que necesita saber esta lengua y su biblioteca estándar para la que ha influido en el diseño de muchos idiomas siguientes y las llamadas a las bibliotecas estándar (como fopen, fprintf , fread) se encuentran en la mayoría de los lenguajes (PHP, Ruby, Matlab).

    Además, C es conocido como «asamblea portátil ‘que significa que le da el control preciso sobre el diseño de las estructuras de datos en la memoria , pero agrega seguridad de tipos de reunión y que sólo puede volver a compilar el código para cualquier arquitectura.

    En esencia, C es el pegamento que mantiene unida a la gran mayoría de todos los idiomas que hay. Es la lengua franca de la programación moderna.

    Qt4 (ahora QT5 ) Marco que tiene bibliotecas para todo, incluyendo gráficos, multimedia, acceso a bases de datos con una gestión de memoria semi-automático que significa que puede crear aplicaciones complejas con tanta facilidad como en Java o C # y conseguir todas las ventajas del código nativo (portabilidad, rendimiento, integración)

    inseguro en C #). Lo que hace que la interacción con JNI o ​​manipular los datos en bruto (como texturas en juegos) bastante complicado

  • soluciones de diseño extraños que violen la programación orientada a objetos tan altamente elogiada (las interfaces vacías como Cloneable, tipos borrados de los genéricos en bytecode, última mutable las variables -> System.out y amigos). Si bien estos no son los principales problemas, debe tenerse cuidado a la documentación de la programación en Java y leer con mucho cuidado
  • En general, Java es una buena opción para la mayoría de las tareas, sobre todo con hilos múltiples servidores web gracias al apoyo rica para la programación paralela, async IO y los protocolos y estándares populares (incluyendo HTTP, la codificación URL, etc.) Sin embargo, probablemente no es la mejor opción para aplicaciones multimedia interactivas que requieren baja latencia (por ejemplo, un sintetizador de música) o pequeñas aplicaciones destkop (porque mientras JVM es muy rápido, se necesita algún tiempo para cargar, ya veces no importa si el aplicación toma 20ms o 2 segundos para poner en marcha, los usuarios están impacientes).

    Sin embargo, el mayor problema es que los marcos populares como Hibernate o primavera son demasiado difíciles para los principiantes porque la mayoría de los tutoriales no cubren algunos temas importantes , y la documentación es, por desgracia bastante vaga. Esto vale la pena aprender todas estas cosas, aunque – usted puede crear un sitio web complejo escribir prácticamente ningún código, basándose en los archivos de configuración para la personalización />

    C # / Net
    C # es a menudo llamado el» mejor Java «y Net, en general, toma prestado enormemente del mundo Java y la arquitectura de la JVM. Vamos a ver qué puntos fuertes y débiles están aquí

    Pros:..

    • Como C # está destinado a ser el lenguaje de programación principal de la plataforma de las ventanas, CLR Net (Common Language Runtime) y Net VM fueron especialmente optimizado para capacidades de código de interoperabilidad y multimedia nativas. Por lo tanto,. Net incluye el P / Invoke mecanismo (DLLImport, las importaciones con tipo de funciones nativas de modo que usted puede utilizar su código nativo sin necesidad de escribir talones ayudante en C).
    • El lenguaje incorpora características agradables que hacen que el código sea más compacto y más fácil de escribir y leer (la inferencia de tipos con la palabra clave «var», expresiones lambda)
    • LINQ. Este es un lenguaje incorporado en la consulta que hace que la interacción con bases de datos y XML muy fácil. Echa un vistazo al ejemplo que demuestra lo fácil que es obtener datos de

    ; mediante ( NorthwindDataContext contexto = nuevo NorthwindDataContext ( ) )
    {
    clientes var =
    de c de Contexto Los clientes
    donde ( c ContactName Contiene (» John « )
    & amp ; y amp ;
    c CompanyName Contiene (» Empresa « )
    ; seleccione c ;

    }

    Contras:

    • actualizaciones importantes romper la compatibilidad binaria Probablemente no es un gran problema, excepto que tendrá que quedarse con una copia. del tiempo de ejecución mayor alrededor para aplicaciones de legado. Supongo que las ventajas de esta decisión son mayores que los problemas
    • La implementación por defecto es no portátil, no multiplataforma y no FOSS (software libre y de código abierto). Lo que significa básicamente estás encerrado con el ecosistema de Windows y depende de las decisiones de diseño de Microsoft. Un bloqueo típico vendedor. Algo que no puede permitirse cuando se necesita para garantizar su fiabilidad y la disponibilidad de software
    • No hay herramientas de desarrollo gratuitas (o ningún) por falta de m $ plataformas. Incluso las versiones de mono (la ejecución Net FOSS.) para Android y iOS cuestan dinero, y debido a problemas de licencia y técnicos tales aplicaciones no van a encontrar su camino en los mercados de aplicaciones.

    Perl

    no me gusta perl Pero voy a encontrar un par de minutos para escribir sobre ello más tarde

    PHP
    PHP es bastante llama fractal de un mal diseño Y no es de extrañar Hay momentos positivos, por supuesto:


    Pero están enormemente con sobrepeso por los siguientes problemas:

    Ok, yo quería escribir sobre algunas otras lenguas, pero simplemente dejando el marcador de posición por ahora

    Javascript – la maldad pura

    python – no uno malo, pero yo no he utilizado mucho
    ruby ​​- me encanta

    Lisp – demasiados paréntesis

    Erlang – que las rocas

    Ocaml / F # -. también fresco mi herramienta de elección
    Haskell – cool, pero demasiado complicado

    Ahora, yo voy a ti Reming a echar una breve mirada a algunos programas matemáticos. Podría ser útil o divertido.

    TuringTarpit] http://c2.com/cgi/wiki?TuringTarpit

    [WAT] https://www.destroyallsoftware.com/talks/wat

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *