¿Qué lenguaje de programación odian más las personas y por qué?

Todavía no entiendo esta lógica de odiar un lenguaje. Los idiomas no son más que herramientas para hacer algo. Use el lenguaje correcto para el trabajo correcto.

Solo porque no entiendes un idioma no lo hace malo. De alguna manera parece estar de moda odiar a PHP y VB.

Si tomamos VB como ejemplo. Antes de que se convirtiera en vb.net, motivó a muchas personas a comenzar a programar para Windows. Empezar fue sencillo: diseñó la GUI con una interfaz de apuntar y hacer clic. No había otras herramientas como esa que te permitieran programar tan fácilmente. No fue realmente el idioma, sino el IDE lo que lo hizo tan fácil de comenzar. Dado que el IDE y el idioma estaban vinculados entre sí, solo hizo que más personas comenzaran con VB.

No diré que los GUI diseñados utilizando VB eran bonitos. Pero ayudó a los no programadores a escribir un programa “Hello World” sin hacer demasiado. Los motivó lo suficiente para empezar. No puedo decir lo mismo de la mayoría de los idiomas, incluso hoy en día.

Para comenzar con un nuevo idioma o una herramienta, normalmente se reduce a qué tan pronto puede ser productivo y ver los resultados. Y cuando está aprendiendo un nuevo idioma, lo último que desea ver son advertencias y errores en su programa “Hello World”.

Realmente no importa qué idioma uses. Mientras sus conceptos sean claros, el cambio de un idioma a otro no debería ser tan difícil.

Perl, todos los días y dos veces los domingos. Cada vez que vuelvo a él, siento que tengo que aprenderlo todo de nuevo, a diferencia de Python, Ruby, JavaScript, C, C ++, Objective-C, etc. Sus millones de formas de hacer cualquier cosa hacen que el código de otras personas sea casi ilegible, y su la terseness hace que incluso lo más simple parezca una tontería.

Mis intentos de estructurar el código de Perl (y preguntar a cualquiera que haya visto mi código, soy un psicópata por la elegancia y la organización) siempre fracasan por completo. Lo que comienza como relativamente legible se transforma lentamente en un revoltijo de basura ya que tengo que luchar contra la sintaxis y hacer un cambio aquí, un cambio allí, hasta que lo que se muestra en la pantalla se ejecute, pero no tiene relación con lo que escribí originalmente.

Estoy francamente desconcertado de que en la actualidad, cualquier persona opte por utilizar Perl para un proyecto cuando hay muchas más opciones sensatas por ahí. Su día ha llegado y se ha ido.

Prefiero pensar en estos idiomas como “un gusto adquirido”, y los mejores puntos de los idiomas son generalmente el Síndrome de Estocolmo que se manifiesta.

Al final del día, el único idioma que realmente no me gustaba (que no estaba destinado a ser desagradable) era Prolog. Conceptualmente, está bien, pero parece que tiene un trastorno de personalidad múltiple en el que no tiene control sobre la operación … excepto un montón de cosas que necesita controlar. Eso, y las implementaciones tienen un rendimiento variable basado en el orden en el que se habló sobre las reglas, que es como el peor de los mundos posibles.

Java también me molesta por tener una crisis de identidad, pero parte de eso está empezando a sacudirse (¡solo quince años más tarde!) Con máquinas virtuales alternativas y lenguajes alternativos dirigidos a las máquinas que disocian algunas de las peores partes. (Excepto por la cosa “todo en mi directorio es público”. Desafortunadamente, eso probablemente nunca desaparecerá).

La respuesta a esta pregunta es bastante subjetiva. La gente ya ha mencionado aquí dos de mis lenguajes favoritos: Ruby (lenguaje de programación) y Python. PHP (lenguaje de programación) y Visual Basic (lenguaje de programación) parecen bastante impopulares. Pero cualquiera de estos idiomas, cuando se utilizan para resolver problemas que resuelven bien, son buenos idiomas. Son las lenguas que se usan a menudo en lugares donde no deberían usarse las personas que las odian.

Eso me lleva al lenguaje que más odio: PL / SQL . Que su sintaxis se base en Ada es razón suficiente para odiarla, pero la mayoría de las veces odio porque la gente a menudo olvida que es una muy mala idea incorporar toda la lógica de negocios de una aplicación en PL / SQL. Si solo más personas hubieran sido sometidas a la tortura de mantener los scripts PL / SQL corriendo en miles de líneas, no habría sido un gran concurso aquí.

Tener que usar PL / SQL todos los días me hace desear poder volver a los días en que tuve que incursionar con PHP . No me gusta mucho PHP como lenguaje, pero bueno, hizo posible WordPress, por lo que realmente no puedes odiarlo tanto.

De todos modos, la respuesta a esta pregunta depende completamente de qué lenguaje se usa para el tipo incorrecto de proyectos … porque así es como los lenguajes suelen obtener mala reputación.

En mi opinión, BASIC y Visual Basic.

El BASIC clásico está repleto de números de línea y debe reservar los números sin saber cuántas líneas tendrá que insertar después de eso. Por ejemplo, cuando escribió las líneas 10, 20, 30 … luego quiere insertar 11 líneas entre las líneas 20 y 30, entonces es un desastre si su programa es de una línea de mil líneas.

5 LET S = 0
10 MAT ENTRADA V
20 LET N = NUM
30 SI N = 0 ENTONCES 99
40 PARA I = 1 A N
45 LET S = S + V (I)
50 SIGUIENTE I
60 IMPRIMIR S / N
70 IR A 5
99 FIN

También tienes GO TO’s en todas partes y es difícil seguir el flujo del programa. No hay bloque de código como lenguajes de programación estructurados.

Esto se ha aprovechado (o tal vez se ha abusado) en este concurso de codegolf Ejecutar impresiones hacia atrás

40 imprimir “Línea 1”
30 imprime “Línea 2”
20 letras “Línea 3”
10 letras “Línea 4”

Página en stackexchange.com
El código se imprimirá al revés de “Línea 4” a “Línea 1”. Esto confunde a los programadores al darse cuenta del flujo de control aún más.

El Visual Basic más nuevo es mejor con bloques estructurados pero aún demasiado largo y detallado en comparación con otros idiomas debido a varias razones. En primer lugar, la declaración de variables es la más larga en todos los idiomas que conozco

Dim Count As Integer, a As Integer, b As Integer
Relación de intensidad As Double, tmp As Double, data (1000) As Single

Debe especificar el tipo para cada variable y quedarse atascado con Como y escribir en todas partes porque no hay una forma abreviada. En el siguiente código Dim a, b As Interger , a será de tipo Var (un tipo que puede almacenar todo) y no entero, lo que probablemente no sea lo que esperaba. Eso empeora el rendimiento y, a veces, proporciona una puerta para que entren los errores. A diferencia de la mayoría de los otros lenguajes, como C o Pascal, cuando se declaran múltiples variables a la vez (como int a, b, c o var i, j, k: integer ) Ser del mismo tipo.

Además, no hay forma de inicializar variables y debe asignarlo explícitamente después de declarar . De nuevo no hay taquigrafía. Verás cuánto se frustró al inicializar una matriz de mil elementos. Sin mencionar la desaceleración cuando necesita asignarla individualmente en lugar de solo leer la tabla de tiempo de compilación que se almacena en una sección separada como en otros idiomas.

Myarray privado (3) Como entero, algo como entero
myarray (0) = 1
myarray (1) = 2
myarray (2) = 3
myarray (3) = 4
someint = 5

También carece de operaciones de cambio de bits . ¿Imagina cómo hacer muchos problemas de operaciones bitwise sin un cambio? No hay otra manera que la de emular con multiplicaciones / divisiones por potencias de 2.

Otra cosa es que las matrices están indexadas por paréntesis () , lo que dificulta la distinción de matrices y funciones. No sé por qué no usan {} y [] cuando ya están disponibles. Muchos otros símbolos también se desperdician en BASIC. En su lugar, usan palabras para declaraciones o terminaciones de bloque y alargan el código.

El código torpe hace que sea más difícil hojear todo el programa.

VB.NET ha resuelto muchos de los problemas de VB6. Se ha añadido soporte para matrices / inicializaciones de variables . También agregó los operadores de cambio que ayudan mucho en las operaciones a nivel de bits. Pero en general, todavía no le ayuda a deshacerse del código hinchado como las versiones anteriores.

El peor lenguaje en el que tuve que escribir el código fue JOVIAL, que era una variación de Algol. Tuve una pasantía en una empresa que hacía trabajo en el Departamento de Defensa de los Estados Unidos (DoD) y estaba trabajando en un código relacionado con los sistemas de misiles. El código estaba escrito en JOVIAL, del que nunca antes había oído hablar.

La versión que ejecutaron en nombres de variables limitadas a 6 caracteres, y cualquier carácter que supere una determinada columna se consideró automáticamente como comentarios. Así que las variables eran todas las siglas ininteligibles que eran imposibles de entender si no sabías cómo funcionaba el sistema.

Déjame decirlo de esta manera: algunas personas sobre este tema se quejaban de la ADA. ADA era el idioma que la compañía planeaba actualizar a JOVIAL. Pero cuando tiene que escribir código según la especificación de DoD, a menudo se queda estancado al tratar con idiomas antiguos como ese.

http://en.wikipedia.org/wiki/JOVIAL

Nosotros, o en mi caso, en la periferia de, el maravilloso mundo de la maquinaria informática, tenemos una larga e ilustre historia de guerra interna. Me saltearé alegremente la pregunta sin respuesta de quién debería obtener el crédito por inventar la computadora. Turing, von Neumann, Atasanoff, Eckert y Mauchly tienen sus defensores (a menudo apasionados); un caso judicial histórico pretendía resolverlo, pero no puso fin a los argumentos. La verdad es que probablemente ninguna persona puede o debe ser acreditada; estos creadores computacionales se apoyaron en muchos hombros: M. Jacquard, cuyo ingenioso invento dejó sin trabajo a miles de operadores de telares e inspiró disturbios en París (la Ciudad de la Luz y la tranquilidad cívica); Charles Babbage y Augusta Ada King, condesa Lovelace; y el tipo original de mutilar-huso-mutilado, Herman Hollerith; por nombrar unos cuantos.

Pero quedan varios contratiempos indecorosos, algunos de los cuales probablemente se pierden en el desperdicio sin rastro de la historia para muchos de los adeptos de software jóvenes (menores de 40 años), a saber. (lista parcial de las más notables):

  • IBM contra otros: Big Blue se convirtió en el enemigo de Todo lo que es bueno y puro cuando Tom Watson Sr. dejó en claro que el marketing era más importante que la ingeniería.
  • Ingrese vs =: La notación polaca inversa de HP (y puristas de programación) vs el álgebra de escuela secundaria plebeya de TI. (De acuerdo, esto implicaba que las calculadoras de mano no fueran las computadoras, pero la disputa se intensificó cuando estos dispositivos obtuvieron la capacidad de almacenar una serie de pasos, que suena sospechosamente como un programa).
  • Unix vs. DOS: Sistema operativo real vs. sistema de archivos. Los académicos CS puristas contra la puta de Bellevue que se vendieron a IBM ( cf. IBM vs. otros, intercambiar a Bill Gates por Tom Watson Sr.).
  • Inicio de sesión frente a inicio de sesión: ( cf. Unix vs. DOS; también, IBM dice Iniciar sesión).
  • Mac contra Windows: quizás Apple sea ​​más preciso que todos los demás, por lo que esto puede abarcar iOS vs. Android. El Mac se lanzó en el famoso comercial único del Super Bowl que mostraba a una joven atlética corriendo por el pasillo de un teatro y lanzando un martillo a una gran cantidad de trajes (símbolo universal de IBM). Apple ha alimentado (¿se atreve a decir, parlayed ?) Esta ética anti-establishment tan bien que ahora tiene la capitalización de mercado más grande de todas las corporaciones que cotizan en bolsa en el mundo. Microsoft es el # 3. IBM es el # 30. El marketing sigue siendo más importante que la ingeniería.

NB IBM aparece en el lado no iluminado de todos, excepto en la disputa de la calculadora. A medida que las computadoras personales proliferaron y los márgenes se redujeron (a excepción de Apple, gracias a su excelente comercialización), la estatura de IBM cayó. Tan recientemente como 1990 fueron # 1 en capitalización de mercado mundial; se hundieron al # 8 en 1991, cayeron del top 10 en 1992, y se ubicaron en el segundo nivel.

Ahora estamos eligiendo los lados de los idiomas. Este es un argumento singularmente no estructurado, con pocas restricciones para cuándo se desarrolló una lengua, por quién y con qué propósito. Teniendo en cuenta las carpas sobre COBOL, me sorprende que nadie se queje con el 1401 Autocoder o JCL, aunque tengo la sensación de que uno o más de mis nietos recibirán una factura de servicios públicos (si no opta por pagar en línea) impresa con un programa ejecutándose en una máquina virtual en algún lugar de la nube que a su vez ejecuta un programa COBOL dentro de un emulador 7090).

No odio ningún idioma, y ​​no creo que nadie deba (incluso los adeptos más talentosos y dedicados de software). El mejor lenguaje es el que ya conozco, a menos que mi empleador (que podría ser yo) diga usar otro idioma para desarrollar un producto vendible (que no se confunda con el comercializable).

A menos que el lenguaje sea APL. Uno debe trazar la línea en algún lugar.

1 Una palabra que aparentemente no existe pero debería.

Pitón.

Puede que sea solo mi opinión, pero no me gusta la sangría (vengo de un lenguaje donde la sangría era un pecado mortal). Además, la distinción entre una expresión y una declaración es arbitraria y molesta.

GML (Idioma de Game Maker)

Tengo que ingresar la definición de un objeto, seleccionar el evento correcto y hacer doble clic en el bloque “Ejecutar código” para ver algo de código, ya que arrastrar y soltar es la opción predeterminada. Además, el editor de código carece de sangría, los arreglos no son ciudadanos de primera clase, y los únicos “objetos” son los que están en un tablero de juego. Además, es solo para Windows y la versión completa tenía un precio de alrededor de $ 40 a partir de 8.1 (creo que ahora es aún más caro).

Edit: Tendré que considerar a Touhou Danmakufu como otro candidato. Los objetos están referenciados por ID numéricas, y muchos nombres de funciones son detallados, especialmente sin notación de puntos. Estás jugando efectivamente un juego de “Simon Says”, tratando de no olvidar pasar el primer parámetro de funciones de objetos (que a veces tienen nombres muy detallados). La comunicación entre scripts solo se puede realizar mediante “datos comunes” detallados o mediante eventos. La indexación de matrices grandes puede destruir el rendimiento. Además, muchos de los comportamientos extraños no están documentados, por lo que tengo que enfrentar errores, a veces obteniendo ayuda.
La verbosidad es otro problema: mientras que en otros idiomas usaría bullet.x += 1; o incluso bullet.setX(bullet.x + 1); , en Danmakufu tienes que usar ObjMove_SetX(bullet, ObjMove_GetX(bullet) + 1); . Además, las declaraciones de control siempre necesitan llaves, incluso cuando se trata de una sola declaración.
Mi “comportamiento extraño” favorito es agregar cadenas; Puedes ver un ejemplo aquí. Es decir, puede agregar (no confundir con concatenar) las cadenas agregando los códigos de caracteres por pares.
A pesar de todas esas fallas, Danmakufu funciona como un encanto cuando estás programando un STG. Coroutines (o “tareas”) simplifica la creación de patrones elaborados, y el nuevo motor es bastante flexible y, al mismo tiempo, es bastante fácil de usar. Algunos incluso pueden argumentar que la verbosidad podría ser una característica al hacer que el código sea más legible.

Me alegro de que Jaap Weel ya haya cubierto LabView.

El idioma que más odio es el lenguaje de scripting JMP utilizado por el paquete de estadísticas y gráficos JMP que se usa ampliamente en mi lugar de trabajo. Hay muchas cosas que son terribles acerca de este lenguaje de programación, en gran parte debido a su creación ad-hoc de una manera que recuerda a PHP.

Los problemas con JSL incluyen:

  • Inconsistencias frecuentes en los nombres que suponen una gran carga mental para los programadores (por ejemplo, algunos controles GUI utilizan el método Get y otros usan Get Value )
  • Este estúpido error de automatización de win32 / COM + que informé hace 2 años, documenté exhaustivamente y, finalmente, se me ocurrió una solución horrible para. La mejor respuesta que obtuve de SAS fue “no hagas eso”.
  • El lenguaje tiene una función llamada Munger . Como el manual lo explica alegremente, ” Munger funciona de muchas maneras diferentes, dependiendo de lo que especifique para sus argumentos: Munger(string, offset, find | length, ) “. Literalmente hace 9 cosas diferentes según el orden, el tipo y la cantidad de argumentos que se le den.
  • El lenguaje viola completamente el principio de menos sorpresa en casi todas las oportunidades. Por ejemplo, si intenta concatenar tablas de longitud N y M , obtiene una tabla de longitud N + M. Hasta ahora tan bueno. Es posible construir una tabla de longitud cero, sin embargo, si M = 0, concatenar las dos tablas produce un error (no útil) en lugar de simplemente devolver la primera tabla.
  • El lenguaje tiene muchos tipos de datos fundamentales que no están documentados en ninguna parte, pero que pueden producirse en cualquier lugar. Por ejemplo, el valor de tipo nulo que Missing es de tipo numérico , mientras que el otro valor de tipo nulo Empty es un singleton de tipo sui generis . Ejercicio para el lector: ¿ cuál de estos dos nulos es devuelto por la función Regex , que devuelve una cadena en el caso de una coincidencia exitosa, cuando no hay coincidencia?

En mi opinión, lo peor de JSL es que es posible, pero enloquecedoramente difícil escribir código de auto-introspección o de auto-construcción … lo cual es necesario porque hay muchos tipos de objetos incorporados que no se pueden expresar de ninguna otra manera. El lenguaje trata el tipo de datos de “expresión” como implícitamente evaluado en la mayoría de los contextos, pero implícitamente no evaluado en los argumentos de algunas funciones incorporadas, pero no todas, y está totalmente sin documentar. Casi todos los intentos de escribir código robusto y genérico es un ejercicio de prueba y error hasta que aprende a usar un subconjunto muy restringido del lenguaje, y cada usuario experto se conforma con un subconjunto ligeramente diferente.

El idioma que más odio es también el que más amo: Forth.

Elegancia, poder y belleza. Forth estaba orientado a objetos y basado en funciones a principios de los años setenta. No aconseja factoring, se basa en ello. Permite a un programador decente implementar un entorno de arranque completo y cómodo (incluyendo O / S) en una máquina nueva y desconocida en días. Sí, días. Es increíblemente interactivo.

Debido a que usar Forth es como un baile entre humanos y máquinas, sin embargo, es un lenguaje de solo escritura. Casi nunca he podido leer el código Forth de otra persona. Es como tratar de imaginar el sueño de otra persona.

Si Forth tuviera una canción principal, sería “She’s So Mean” de Matchbox Twenty.

Demasiado.

Python: la sangría se utiliza para especificar estructuras de bloque en lugar de corchetes o llaves. Además, uso intensivo de dos puntos y guiones bajos y colisión del nombre del módulo / variable.

LabVIEW : El enfoque de programación de GUI puede hacer que cualquier cosa más allá de las tareas más simples sea extremadamente compleja.

JavaScript : distingue entre mayúsculas y minúsculas, diferentes implementaciones en los navegadores, falta de capacidades de depuración (aunque Firebug resuelve eso) y reglas de herencia extrañas.

COBOL : sintaxis muy detallada (fue pensada para que no sea programable), incompatibilidad entre versiones y, antes de COBOL 2002, falta de soporte para programación orientada a objetos, funciones y punteros.

C ++ : un conjunto de características demasiado grande, administración de memoria manual, velocidad de compilación lenta y el hecho de que permite a los programadores alternar entre código orientado a objetos y procedimientos en el mismo programa.

Java : la sintaxis es muy detallada, es lenta, no es fácil pasar las funciones, las API están sobre diseñadas y muchos otros lenguajes pueden hacer lo que hacen, pero de manera más eficiente.

Perl : La principal crítica contra Perl, consistentemente, es que hay demasiadas formas de hacer las cosas. Tantos, de hecho, que es esencialmente un lenguaje de solo escritura, lo que significa que el código Perl se vuelve imposible de leer (y, en última instancia, mantener).

Los que ya nadie usa:

  • Lenguaje de ensamblaje x86, porque la arquitectura del conjunto de instrucciones es simplemente mala. ¿No estamos contentos de tener compiladores que nos oculten su fealdad?
  • Aplicaciones avanzadas de defensa (ADA)
  • COBOL, que fue un intento de hacer que la programación fuera más accesible para los MBA.
  • Visual Basic (lenguaje de programación), que fue otro intento …
  • APL (lenguaje de programación), porque es todo griego.
  • PL / 1
  • Perl (lenguaje de programación), porque prefiere la función sobre la forma (en lugar de la inversa; vea Forma vs. Función), que los puristas del lenguaje odian.

Labview. Aquí hay un ejemplo de un programa de Labview (fuente: http://upload.wikimedia.org/wiki …)

Alguien debe haber pensado que la programación mediante cajas de conexión en una GUI sería fácil . Y de hecho lo es, para programas simples que realmente corresponden a un gráfico dirigido de elementos de procesamiento de señales. Pero la gente escribe proyectos grandes en Labview, con estructuras de control como bucles y condicionales. Esto le da un nuevo significado a “código de espagueti”.

Aquí hay otra (fuente: http://www.bloomy.com/lvstyle/im …)

Comparado con esto, el lenguaje de secuencias de comandos Linden no es más que un segundo distante.

Python .

Es muy fácil escribir un código de “parece funcionar”, creando toneladas de software de mierda y personas que piensan que son buenos programando solo porque saben cómo importar cosas.

Lo odio porque las peores horas de trabajo que tuve consistieron en depurar el código de alguien en ese idioma, y ​​casi todos los errores se debieron a cosas que se etiquetarían como errores de sintaxis en cualquier lenguaje razonable (principalmente errores de tipo). Sé que en realidad no es culpa de Python, pero creo que este tipo de idiomas puede ser una pesadilla en el mundo corporativo porque a muchas personas les resulta atractivo por su alta productividad aparente.

Además, odio la incoherencia de sus bibliotecas, donde algunas funciones se nombran con camelCase y otras that_way, o la “funcionalitis” y el “procedimiento” que se encuentran allí fusionados.

Ah, y la no compatibilidad hacia atrás entre python 3.xy python 2.x, en serio.

Y, por último, el douchebaggery general en la comunidad de Python. No me preguntes por qué, pero los idiotas más grandes a los que les gusta hacer comentarios como “wow, Java, por lo general, mucho 2013” están ahí.

Java de estilo empresarial. Hinchado con patrones de diseño y jerarquías de clases innecesarias.

El lenguaje Java central no es tan malo, en mi opinión, se encuentra en algún lugar en medio de la clasificación de los lenguajes de programación.

Realmente no odio ningún idioma, pero tengo algunos disgustos:

  1. PHP: para errores de inconsistencia y seguridad (¿sabía que puede inyectar en mongodb con PHP? 🙂
  2. Perl – para escribir solo estilo.
  3. C / C ++: para la administración manual de la memoria y los errores sutiles, que se manifiestan mucho después de que ocurra el error real (una vez que estuve buscando un error desencadenado en el servidor C durante varios meses).
  4. Java – para APIs y verbosidad sobre-diseñadas.

JavaScript

No diría que lo odio , pero me gustaría que todos los principales navegadores web estuvieran de acuerdo en implementar algo menos incómodo. Desde la distancia, Javascript parece un lenguaje de programación razonable, pero los diseñadores (y yo uso ese término a la ligera) tomaron algunas decisiones extrañas.

Esta página resume los errores de los diseñadores bastante bien, sin siquiera intentarlo: Miembros privados en JavaScript

He puesto en negrita las mejores partes …

[Los miembros privados] se adjuntan al objeto, pero no son accesibles desde el exterior, ni son accesibles a los propios métodos públicos del objeto. Son accesibles a los métodos privados. Los métodos privados son funciones internas del constructor.

Por convención, hacemos una variable privada. Esto se utiliza para hacer que el objeto esté disponible para los métodos privados. Esta es una solución para un error en la especificación de lenguaje ECMAScript que hace que esto se configure incorrectamente para funciones internas.

Los métodos privados no pueden ser llamados por métodos públicos. Para que los métodos privados sean útiles, necesitamos introducir un método privilegiado.

Un método privilegiado puede acceder a las variables y métodos privados, y es accesible a los métodos públicos y al exterior. Es posible eliminar o reemplazar un método privilegiado , pero no es posible alterarlo o forzarlo a renunciar a sus secretos.

Además, existe todo el problema con los errores tipográficos que introducen nuevas y sorprendentes variables cuya existencia solo se descubrirá después de una falla en tiempo de ejecución y un tiempo ilimitado dedicado a maldecir a un depurador.

Estaba equivocado, en realidad … realmente lo odio.

SAS es, con mucho, la peor tecnología, y, por extensión, el peor lenguaje, con el que he tenido el disgusto de trabajar.

Imagina un lenguaje de programación …

  • Cuya estética es comparable a la de la programación de tarjetas perforadas. Quiero decir que obtienes un código rectangular bastante simétrico, pero …
  • Que tiene múltiples primitivas diferentes para tareas como definir una variable que funcione en alguna parte del programa pero no en otra. Debe usar “Var” en alguna parte del programa, pero “definir” en otra y simplemente desacelerar la variable en otra. O bien, una declaración if y donde las declaraciones son declaraciones idénticas para todos los intentos y propósitos, sin embargo, no puede usar la instrucción if en un “proceso de impresión” y tiene que usar una declaración where, pero puede usar dónde o si está en un paso de datos.
  • Cuyo diseño es demasiado arbitrario. Por ejemplo, las fechas se almacenan como un entero que es la diferencia entre esa fecha y el 1 de enero de 1960. ¿Por qué? La información de la entrada donde la entrada es “16-Mar-2000” no es algo como “DD-MM-YYYY” o incluso “DD-Mon-YYYY”. Pero es Date11. También sería diferente si es “16 / Mar / 2000”. ¡¿Por qué?!
  • Cuyo diseño no es consistente. ¿Las afirmaciones de pensar terminan con “;”? Sí, excepto en casos como datalining. ¡¿Por qué?!
  • Es muy caro. Tiene una versión gratuita que se ejecuta en una caja virtual o una instancia de AWS para estudiantes, sin embargo, las funciones no están implementadas o son imposibles de usar (intente trazar).
  • Hace un subconjunto de lenguajes como R o Python, y prácticamente todos los elementos de ese subconjunto se ejecutan de la peor manera imaginable.

Ese lenguaje de programación que imaginaste es un poco mejor que SAS simplemente porque hay un montón de cosas mal con el lenguaje sobre el que no escribí.

Solo voy a añadir Fortran (lenguaje de programación) a la mezcla. Estoy feliz de que no se haya mencionado porque eso significa que otros no han tenido que sufrir. Indexación de matrices arbitrarias, (en versiones anteriores) reglas de formato arbitrarias que implican la colocación de columnas, la insensibilidad de mayúsculas, los nombres de variables de caracteres crípticos de 8, tipos implícitos basados ​​en el primer carácter de un nombre de variable.

A menudo, tiene que trabajar en sistemas heredados donde el código ha existido desde 1977 y los desarrolladores escribieron el código sin pensar en el mantenimiento o la artesanía. Es difícil de leer, de mantener y, por desgracia, aún prevalece en mi comunidad.

K (K (lenguaje de programación)). Este lenguaje es de uso generalizado en muchas empresas financieras. Para darle una idea del idioma, aquí hay algunos ejemplos de Wikipedia:

En la siguiente expresión artificial, el signo de exclamación “!” Se refiere a tres funciones distintas: ¡2 !! 7! 4

Ordenar una lista de cadenas por longitud: [correo electrónico protegido] > #: ‘x

Lista todos los números primos entre 1 y R: (! R) @ & {& / x! /: 2_! X} ‘! R

K realmente ha sido un factor decisivo para mí cuando busqué trabajo en el pasado.