Me parece que los lenguajes de programación destinados a la ciencia y la ingeniería son consistentemente extraños en comparación con los lenguajes de uso general. Algunos ejemplos fuera de mi cabeza:
- En Matlab, cada función debe colocarse en un archivo separado
- En R, <- es el operador de asignación, a diferencia de = en casi todos los demás idiomas
- Matlab, R, Julia y otros están indexados en 1
- Matlab usa% para comentarios, y no el estándar # o //
Por supuesto, todas estas lenguas tienen varias características de diseño que en realidad hacen más fáciles de usar para aplicaciones científicas, como la notación matricial más natural. Aún así, todos ellos inexplicablemente toman todas estas decisiones extrañas que no hacen nada más fácil y podrían haberse evitado fácilmente si los diseñadores de idiomas hubieran elegido hacer lo que hacen el 99% de otros idiomas. ¿Es el motivo por el que el vendedor está encerrado? ¿Falta de contacto con la comunidad más amplia de desarrollo de software? ¿Algo más?
Leí este hilo y no encontré las explicaciones satisfactorias. El hecho de que R haya sido diseñado como un lenguaje científico no significa que haya que ignorar por completo las convenciones y usar <- en lugar de =.
fuente
Respuestas:
E incluso si juzgamos solo de acuerdo con los estándares de TI ... Lo sentimos, ¿a qué estándares te refieres? ¿Has intentado escribir un programa en APL o SNOBOL? Estos dos idiomas son, en mi humilde opinión, los MÁS poderosos en los campos apropiados (conteo y cadenas). Pero la sintaxis es algo MUY extraño (y efectivo) Leer una línea de código APL podría llevar días. Por otro lado, dicha línea es una pieza seria de SW. Regresarías a Mathlab con lágrimas de alivio.
En cuanto a "=", muchas personas tienen problemas para acostumbrarse a que no se trata de igualdad, sino de asignación. Por cierto, en Pascal es la igualdad y la asignación es ": =".
¿Y realmente crees que == para la igualdad es más natural? Por el contrario, mezclar = y == es el error MÁS común en la programación en C, ocurre muy a menudo incluso en IDEs contemporáneos, con su control automático.
Acerca de la indexación desde 1: es la única natural. Cuando eras niño, habías aprendido poemas y canciones, donde contabas: uno, dos, tres ... Y no 0,1,2 ... En matemáticas escolares estudiamos que el conteo comienza desde 1, y que 0 no pertenece a números naturales / contables. Solo con la definición de funciones vienen los índices no naturales. Después de todo, el 0 fue inventado muchos miles de años después de que nuestro antepasado levantó un dedo.
0-start fue más sencillo de realizar e inmediatamente se metió en la práctica de TI después de la aparición de C. Pero en Fortran, el primer idioma, se usa la indexación 1. Lo mismo con otros idiomas de la época preindustrial.
Y sí, había leído el artículo de Dyjkstra sobre la naturalidad del conteo basado en 0. Y totalmente en desacuerdo con su argumentación. Es natural para los músicos solo. E incluso 0 entusiastas que crean los compiladores de C y Java, ¡cuenten las líneas del código que COMENZAN DE 1!
fuente
La indexación desde 1 no es extraña, es completamente normal y esperada, excepto para los programadores , porque han sido condicionados a esperar un conteo basado en 0 por C (que estaba condicionado por las propiedades de la arquitectura del procesador).
Los comentarios se indican de muchas, muchas maneras diferentes en diferentes idiomas; no existe una forma estándar, cada idioma elige un símbolo o un dígrafo que aún no se ha tomado.
La asignación también es un concepto extraño e incomprensible, excepto para los programadores ; la mayoría de la gente no le importa si se trata de
=
o:=
, o<-
, en su lucha por comprender el significado (y para ellos, de hecho es mejor no usar=
, ya que esto hace hincapié en que la asignación no es la igualdad - el obstáculo más común para los no programadores entender el código)En resumen, los lenguajes de programación destinados a personas que no sean programadores profesionales se ven diferentes porque las personas que más los usan lo quieren así.
fuente
Hay tres problemas:
Ahora a sus puntos específicos:
No conozco a Matlab, así que no puedo comentar sobre los requisitos de la organización de archivos. Tenga en cuenta que Java quiere que use un archivo por clase pública.
En R, también
=
se puede usar como operador de asignación. Tenga en cuenta que necesita múltiples operadores de asignación<-
y<<-
para lidiar con su concepto de alcance (<<-
asigna a un símbolo en un ámbito externo en lugar de crear un nuevo símbolo dentro de una función). Las flechas se pueden utilizar en la otra dirección también, potencialmente hacer el código más limpio:complex_calculation() -> x
.La indexación basada en 1 es el estándar en matemáticas, que es con lo que los usuarios de Matlab y R se sienten más cómodos que C. Julia sigue a Matlab para tener una mejor curva de aprendizaje.
%
para comentarios también se usa en TeX / LaTeX. La#
es solo una convención de los lenguajes de script Unix y sus descendientes.También ignora que los lenguajes de programación "reales" tienen muchas partes extrañas. ¿Por qué no utiliza Scheme
=
? En lugar:¿Por qué usa C
*
para desreferenciar, cuando obviamente un caret^x
es más común en otras tradiciones?fuente
Supongo que depende de tu exposición a otros idiomas. La parte superior de mi cabeza:
fuente
<!-- ... -->
. El signo de porcentaje se utiliza para codificar URL: sehttp://example.com/()
convierte enhttp://example.com/%28%29
.