Uno de mis profesores dice que "la sintaxis es la interfaz de usuario de un lenguaje de programación", lenguajes como Ruby tienen una gran legibilidad y están creciendo, pero vemos que muchos programadores son productivos con C \ C ++, por lo que como programadores realmente importa que la sintaxis debería ser aceptable?
Me encantaría saber tu opinión al respecto.
Descargo de responsabilidad: no estoy tratando de comenzar una discusión. Pensé que este es un buen tema de discusión.
Actualización: este resulta ser un buen tema. Me alegra que todos estén participando en él.
programming-languages
syntax
Saif al Harthi
fuente
fuente
Respuestas:
Si lo hace Si tiene dudas, tome APL , o J , o Brainfuck , o incluso Lisp o Forth, e intente comprender cualquier programa no completamente trivial. Luego compare con, por ejemplo, Python.
Luego compare el mismo Python (o Ruby, o incluso C #) con cosas como Cobol o VB6.
No estoy tratando de decir que la sintaxis peluda es mala y la sintaxis similar al lenguaje natural es buena en todas las circunstancias. Pero obviamente la sintaxis hace una gran diferencia. Con todo, todo lo que puedes escribir en el lenguaje de programación más hermoso también puedes escribirlo como un programa de máquina de Turing, pero generalmente no quieres, ¿verdad?
fuente
En la práctica, creo que sí importa. La legibilidad ya se ha discutido anteriormente. Otro problema podría ser cuántas teclas se necesitan para expresar una idea / algoritmo? Sin embargo, otro problema es lo fácil que es para los errores tipográficos simples ser difíciles de captar por el ojo humano y la cantidad de travesuras que pueden causar.
También he encontrado útil en algunos contextos analizar y / o generar fragmentos de código a través de otro programa de computadora. La dificultad de analizar el idioma y / o generar el código correcto afecta directamente cuánto esfuerzo se requiere para crear / mantener tales herramientas.
fuente
Creo que tu profesor se refiere al azúcar sintáctico .
Entonces, lo que su profesor insinúa es que cualquier código / sintaxis escrito en un lenguaje de programación puede expresarse en otros idiomas de la misma manera, o incluso en el mismo idioma.
Robert Martin, sacando del teorema de la programación estructurada , resumió lo que los programadores hacen fundamentalmente con los lenguajes de programación en su discurso de apertura en RailsConf 2010: Robert Martin (video de YouTube , ver después de 14 minutos, aunque recomiendo todo):
Eso es todo lo que hacen los programadores, de un lenguaje de programación a otro, solo en una sintaxis o interfaz de usuario (UI) diferente. Esto es a lo que supongo que se refería su profesor, si él / ella está hablando de manera abstracta sobre lenguajes de programación.
Entonces, en esencia , la sintaxis no importa . Pero si desea ser específico, entonces, obviamente, ciertos lenguajes y sintaxis son más adecuados para ciertas tareas que otras, por lo que podría argumentar que la sintaxis es importante.
fuente
Si y no.
Hay un par de aspectos diferentes para la sintaxis.
La legibilidad ya ha sido mencionada.
La expresividad es un caso interesante. Voy a utilizar el paso de funciones como ejemplo, porque es una especie de punto de inflexión de dolor semántico / sintáctico.
Tomemos C ++ por ejemplo. Puedo crear una función de primer orden de esta manera:
Este idioma particular se usa comúnmente en Elementos de programación de Stepanov .
Por otro lado, puedo imitarlo en Common Lisp con algo como esto :
O, en Perl -
O, en Python:
Todos estos tienen, esencialmente, el mismo contenido semántico, aunque el ejemplo de C ++ lleva algún tipo de metadatos. ¿Qué lenguaje expresa mejor la idea de pasar una función de orden superior? Lisp común apenas hace una variación sintáctica. C ++ requiere que se cree una clase solo para 'llevar' la función. Perl es bastante directo sobre hacer algún nivel de diferenciación. Así es Python.
¿Qué enfoque se adapta mejor al dominio del problema? ¿Qué enfoque puede expresar mejor los pensamientos en su cabeza con el menor 'desajuste de impedancia'?
La capacidad de análisis es, en mi opinión, un gran problema. En particular, me refiero a la capacidad del IDE para analizar y cortar el idioma sin cometer errores. Reformatear es útil. Los lenguajes delimitados por tokens tienden a analizar bien: ruby / c / pascal, etc.
Sin embargo, considere: se han creado sistemas principales de todo tipo con cada lenguaje serio para resolver problemas del mundo real. Aunque la sintaxis es una barrera para expresar algunas cosas, es una barrera que puede solucionarse. Equivalencia de Turing y todo eso.
fuente
La sintaxis definitivamente importa, aunque tiendes a notarla más cuando no es intuitiva y alienta los errores. Por ejemplo, la broma infame del "último error del mundo":
fuente
if(RED = AlertCode)
nunca se debe compilar porque el rojo es constante (o debería ser!)LaunchNukes
procedimiento y nunca lo invoca. ¡Crisis evitada!RED
sea. Si es 0,LaunchNukes()
nunca se llamaría.La sintaxis es importante, y puedo darle dos ejemplos de apoyo: Dylan, que es un Lisp con una sintaxis más convencional, y Liskell, que es Haskell con una sintaxis similar a Lisp. En cada caso, se propuso una variante del lenguaje que tenía exactamente la misma semántica, pero una sintaxis radicalmente diferente.
En el caso de Dylan, se pensó que abandonar las expresiones s en favor de algo más convencional ayudaría a atraer a una gama más amplia de programadores. Resultó que la sintaxis no era lo único que impedía a los programadores usar Lisp.
En el caso de Liskell, se pensó que el uso de expresiones s permitiría un uso más fácil de las macros. Resultó que las macros realmente no son necesarias en Haskell, por lo que ese experimento tampoco funcionó.
Aquí está la cosa: si la sintaxis no le importara a nadie, ninguno de los experimentos habría sido probado.
fuente
La respuesta podría estar en separar lo que "importa" en factores informáticos y factores humanos . Hay muchos factores humanos en la sintaxis:
En lo que respecta a la computadora, el único problema de la sintaxis es si hay ambigüedades que deben resolverse o no, y cuánto tiempo lleva tokenizar / analizar el código al compilarlo / interpretarlo, y es solo en el caso de este último donde la sobrecarga del análisis es un problema importante.
Esa podría ser la razón por la que siempre obtendrá una respuesta de "sí y no" a esta pregunta, porque tiene dos aspectos.
fuente
Sin sintaxis, no tendríamos una "plantilla" común desde la cual comunicar, a nivel humano, la intención de un bloque de código. La sintaxis proporciona un marco común desde el cual los compiladores pueden estandarizarse; los métodos pueden ser compartidos; El mantenimiento puede simplificarse.
fuente
Creo que lo que realmente importa es el acceso a la API y la disponibilidad de funcionalidad de bajo nivel (como el control y bloqueo de memoria) cuando sea necesario. La mayoría de los otros idiomas vienen con estas características incluidas. El problema es que cuando necesita funcionalidad adicional, a menudo tiene que usar un lenguaje como C para implementarlo. Y es engorroso interactuar C con el lenguaje que está utilizando.
Para todo, excepto el desarrollo web (y las matemáticas), he descubierto que C / C ++ sigue siendo EL lenguaje de un sistema operativo y una aplicación. Es lo que se admite la mayor parte del tiempo para el verdadero desarrollo de aplicaciones multiplataforma, preformado y multiplataforma. Y la sintaxis de C está bien. Simplemente muy simple y relativamente detallado. Amazing Syntax realmente no importa tanto. Disponibilidad de energía y API Todos necesitamos interactuar con el código de otras personas (que la mayoría de las veces está escrito en C o sus derivados).
fuente
La sintaxis definitivamente importa. Es extremadamente valioso si la sintaxis del idioma es lo suficientemente flexible como para permitirle crear un lenguaje específico de dominio conveniente y legible para su aplicación. Si dudas de esto, imagina hacer problemas de álgebra en latín prosaico, como se hizo antes del siglo XVIII, o imagina hacer cálculos sin la notación de Leibniz, ahora familiar. Claro, un texto de cálculo es ilegible para un novato, pero con la práctica podemos usar el cálculo y la notación de Leibniz para resolver rápidamente una clase de problemas que requieren páginas de matemáticas con métodos clásicos. La programación es solo otra parte de las matemáticas. Una notación conveniente, cercana al dominio del problema, puede marcar una enorme diferencia en la productividad.
fuente
Aquí hay un programa que calcula la facultad de 6:
La sintaxis es mínima:
Parece existir una creencia común de que la sintaxis es lo que dificulta el lenguaje. Como ocurre a menudo con las creencias comunes, exactamente lo contrario es cierto.
Tenga en cuenta que la sintaxis de LISP solo es legible (si es que lo tiene) porque tiene mucha más sintaxis que la anterior. Entonces, si los fanáticos de LISP te dicen que "la sintaxis no importa", pídeles que sean consecuentes y prueba el cálculo de SKI. Tendrán que admitir que una sintaxis un poco no es tan mala después de todo.
fuente
No creo que importe más allá de la preferencia personal. Todas las cosas (rendimiento, capacidades, etc.) son iguales, entonces puedo ver por qué uno pondría mayor peso en la sintaxis de un idioma, pero elegir pasar por alto el rendimiento de lenguajes como c / c ++ o cualquier otro idioma que mejor se adapte al trabajo simplemente por La sintaxis parecería una mala idea en general.
fuente
Sí, la sintaxis es importante, aunque en realidad solo es legible. Comparar:
(Sí, eso es Python) con
(Sí, ese es un lenguaje que acabo de inventar) Ambos harían exactamente lo mismo, de la misma manera, pero la sintaxis es diferente y Python es más fácil de leer. Entonces sí, la sintaxis definitivamente importa. Incluso el "azúcar sintáctico" es importante.
Es más fácil de leer que
fuente
Si, claro.
Si quieres iniciar una gran llama, pregúntale a la gente dónde ponen el brazalete de apertura en lenguajes tipo C. quiero decir
VS
o incluso VS
¡Y este es el mismo idioma! Además, pregúnteles acerca de los espacios, dónde los colocan (nombre y bracet de la función, operadores, etc.).
¡1000 respuestas están garantizadas!
fuente
La sintaxis sí importa. Sin embargo, hoy en día diría que importa casi por completo debido a la legibilidad y no realmente en términos de la cantidad de pulsaciones de teclas necesarias. ¿Por qué?
Dicho esto, si es demasiado detallado, puede llegar al punto donde afecta la legibilidad. Prefiero ver algo como:
A:
...¡cualquier día!
fuente
La sintaxis es importante para quienes la están aprendiendo, cuanto más baja sea la barrera de entrada, más popular será inicialmente el idioma. Pero si el lenguaje es difícil o imposible de expresarse de manera rica y sucinta, comenzará a debilitarse en popularidad.
Muy conciso y opaco (Perl) es tan malo como excesivamente detallado y prolijo (AppleScript).
Debe haber un equilibrio, una barrera de entrada más baja, alta productividad y fácil mantenimiento.
fuente
Otra cosa a considerar es que los lenguajes de programación con una sintaxis más agradable son más fáciles de analizar, lo que hace que el compilador sea más fácil de escribir, más rápido y menos propenso a errores.
fuente
parse.y
Ruby en desacuerdo. Hay una razón por la cual cada una de las 7 implementaciones de Ruby actual o pronto listas para producción usa el mismo analizador, y cada implementación de Ruby que alguna vez ha intentado desarrollar su propio analizador ha fallado.En pocas palabras: la sintaxis como tal no importa. La semántica que puedes expresar a través de ella es importante.
fuente