¿Puede la programación en objetivos ser una alternativa a la definición de API (de la charla de B. Victor ‘El futuro de la programación)?

Esta presentación estuvo muy bien hecha sátira. Tuve que mirar para ver que en realidad se presentó en 2013. Puedo decir que después de haber estado programando en 1972 (como estudiante de HS escribiendo mi primer compilador), realmente captó el espíritu de cómo era en el momento de los teletipos , tarjetas perforadas, proyectores, justo antes de los primeros micros de Altair.

Para responder a su pregunta sobre ataques de API, en concreto, hasta donde sé, no hay investigación sobre ese tema específico, al menos no comparándolo con los “objetivos”. Hubo una investigación realmente interesante sobre “Emacs basado en el conocimiento” que trató de ayudar a construir programas para usted KBEmacs (Editor basado en el conocimiento en Emacs): Un paso hacia el aprendiz del programador. Probablemente más relevante es el trabajo actual sobre interfaces RESTful (transferencia de estado representativo) o programación reflexiva (Reflexión (programación de computadora)).

Curiosamente, en un nivel (el nivel de hardware) hemos logrado parcialmente los objetivos con interfaces “plug-and-play”. En estos días, cuando su computadora se inicia (o le conecta un nuevo dispositivo). La computadora pasa por un “descubrimiento” que “enumera” todos los dispositivos conectados y “negocia” el nivel de API que admite el dispositivo. Entonces, conecta sus nuevas gafas de realidad virtual en un puerto USB 1.0 y la computadora ve que las gafas deciden que se parecen a una pantalla y le dice a las gafas que hablan USB 3.0 que el puerto al que están conectadas solo es compatible con el protocolo 1.0 y Las gafas se ajustan. Ahora, si las gafas hacen algo completamente diferente de lo que la computadora sabe, la computadora no puede acceder a esas funciones, pero para cosas que la computadora puede hacer [con una pantalla, por ejemplo], puede usar las gafas para hacerlas.

En mi opinión, el trabajo de las interfaces RESTful es un intento de proporcionar el mismo nivel de “plug-and-play” al mundo del software de red. En lugar de una API, tiene el protocolo de interfaz universal que puede consultar. Como “todos” hablan [hablarán] esta interfaz, puede hacer que el software hable con cosas que antes no podía. No puedo decir si esto realmente resuelve el problema de la API. Sin embargo, podría llevar el problema un nivel más profundo.

Un enfoque complementario es a través de lenguajes específicos de dominio (lenguaje específico de dominio). Un DSL es un lenguaje especializado destinado a dar sentido a los expertos de dominio relevantes y abordar el problema de una manera natural para ellos. Eso parece acercarse a la idea de “objetivos”, es decir, “lo que quiere que haga la computadora” y no “cómo hacerlo”.

Para mí esto llega al quid de la cuestión de los objetivos. La parte difícil de definir objetivos es diseñar un lenguaje en el cual expresarlos. Las lenguas como las matemáticas han tardado siglos en desarrollarse (y no sin muchos desvíos y pasos en falso en el camino) e incluso ahora no existe un lenguaje matemático universal que todos los matemáticos hablen, sino muchos dialectos para las diferentes especialidades, a menudo con diferentes términos para el mismo concepto (1-1 y sobre versus inyectivo, sobreyectivo y biyectivo, solo para elegir el primer ejemplo que me viene a la mente; espero haberlo entendido bien, uso los dos primeros, no los últimos tres). Muchas DSL son simplemente unos pocos sustantivos especiales, adjetivos y verbos (et al) agregados a un marco existente.

Ahí radica el siguiente problema. Si no conoce la jerga, el DSL no es útil. Para mí, es la misma frustración que enfrento cuando Microsoft decide que necesita una nueva interfaz para Word: moverán algo de un menú, es decir, le darán un nombre diferente al que tenía antes. Más importante aún, el nombre que eligen no suele coincidir con ninguno de los términos por los cuales lo describiría. Obtener la tabla de contenido para un manual que escribí una vez fue una pesadilla, porque nunca encontré algunas de las características que necesitaba, y no usar Framemaker (ni escorrentía, ni TeX) no era mejor, solo un conjunto diferente de jerga que no era Siempre es el dialecto que hablé.

En ese sentido, creo que su pregunta sobre “programar con metas” como un sueño es relevante. Conectar seres inteligentes que hablan diferentes idiomas es un verdadero desafío. El resultado habitual es una guerra donde una de las culturas se subyuga o pasa a la clandestinidad. Esto sucede en todos los niveles. Sus hijos realmente no quieren que usted sea demasiado fluido para enviar mensajes de texto, y leet es solo para hackers. En el trabajo, una “habilidad” o un “recurso” puede no estar refiriéndose a lo que normalmente se asociaría con esas palabras. Ahora, qué sucede cuando intentas enviarle un mensaje de texto a tu hijo sobre las habilidades de leet. Tres jergas, todas las API incompatibles. No veo que los programas funcionen mucho mejor, no en el futuro cercano. Para unir las jergas de un par de dominios, debe comprender ambos dominios, en este momento esa “comprensión” sigue siendo algo que un humano trae a la mesa, no obstante Watson de IBM.

Espero que esto te brinde suficiente información para investigar el tema por tu cuenta. Es realmente un área grande y solo he arañado la superficie en cosas que parecen relevantes desde mi perspectiva.

Lo dudo (al menos en el futuro cercano a medio plazo). En el mejor de los casos, puede funcionar para algunos dominios muy restringidos.

Si hemos aprendido algo en los últimos 40 años, entonces muchas cosas que parecen bastante simples para los humanos son realmente terriblemente difíciles. Un ejemplo es la “historia de éxito” de la computadora de quinta generación que usa lenguajes como Prolog.

Lo que puede hacer es mantener las API bastante flexibles para que sea posible que dos máquinas negocien dentro de un marco determinado qué servicios brindan, pero ir más allá de eso puede requerir una inteligencia artificial fuerte que no hemos estado más cerca en muchas décadas.

More Interesting

¿Debería todo científico de la computación comenzar a trabajar en el aprendizaje automático porque una vez que producimos máquinas que pueden pensar como humanos, todo lo demás puede hacerse mediante máquinas?

¿Cuál es el equivalente moderno de lo que era Xerox PARC hace décadas?

¿Cuáles son algunos de los mejores libros sobre economía computacional?

¿Qué startups de aprendizaje automático tienen más probabilidades de convertirse en empresas multimillonarias?

¿Cuáles son algunos avances recientes en la teoría de grafos? Tomé un curso de posgrado en teoría de grafos, pero los resultados que uso de la teoría de grafos (espectrales y aleatorios) tienen más de 50 años. ¿Qué hay de nuevo y cuáles son los grandes avances recientes?

¿Es posible convertir el desarrollo de una aplicación basada en un marco existente en un trabajo de investigación?

¿Cómo puede un estudiante universitario publicar un artículo de revista? ¿Qué tan difícil es hacer? ¿Qué consejos y estrategias recomendaría la gente?

¿Debería preocuparme si podría terminar mi doctorado a tiempo?

¿Los investigadores de matemática o ciencias de la computación teóricas leen documentos o simplemente tratan de pensar originalmente?

Soy un estudiante de ciencias de la computación interesado en HCI como tema para mi proyecto final. Mi habilidad de programación no es tan buena. ¿Cuáles son algunas ideas de proyectos que podría emprender?

¿Qué significan las mejoras en PHP7 para los operadores de centros de datos?

¿Cuáles son las áreas / problemas de investigación actuales en informática teórica?

¿Recomendaría ITU sobre Fast para alguien que quiera publicar en su licenciatura? ¿Qué hay de NUST?

¿Cómo debo decirle a mi profesor sobre mi tema de investigación? Soy un nuevo estudiante de doctorado en informática.

¿Cuáles son buenos temas para una tesis de informática?