websites used top tiobe pypl programming popular most languages indice index programming-languages

programming-languages - used - ranking programming languages 2018



¿Programación de lenguajes que son inmutables por defecto? (6)

¿Existen lenguajes de programación cuyas "variables" son inmutables (const, final, etc) por defecto?

¿Y, para hacerlo variable, necesita declarar un calificador inmutable adicional?


Clojure es un dialecto Lisp dirigido a la máquina virtual de Java que trabaja exclusivamente con datos inmutables.

http://www.clojure.org


El óxido puede ser algo que querrías echarle un vistazo. Es un lenguaje de estilo imperativo que se adhiere a la filosofía de programación funcional sorprendentemente a menudo .


La filosofía del paradigma de Programación Funcional está fuertemente orientada a que todas las "variables" sean inmutables, y las "mutables" solo se permiten en casos extremos (es decir, para E / S). Por lo tanto, la mayoría de los lenguajes de programación funcionales como los diversos dialectos Lisp y Haskell reforzarán (más de las veces) las variables inmutables. Por supuesto, algunos idiomas ofrecen más flexibilidad que otros, pero el paradigma / filosofía central permanece, lo que lo desalienta.

Edición: En respuesta a su edición:

Si está buscando una C con constantes más amigables, entonces adoptar un nuevo paradigma de programación no es su solución. En la programación funcional, todo es inmutable (en la mayoría de los casos) y, en general, se trata de una filosofía y un enfoque de la programación completamente nuevos.

Esto no es realmente una solución si lo único que desea es facilitar la declaración de constantes.

Edit2: En respuesta a la gente que me vota:

Si bien respondí correctamente (espero) a la pregunta del autor de la pregunta, no estoy seguro de que haya sido una respuesta que haya resultado útil, dado su nuevo comentario / edición. Sin embargo, espero poder abrir sus ojos a un nuevo y hermoso mundo de programación =)

Edit3: Aquí está la lista de Wikipedia de lenguajes de programación funcionales:

  • APL
  • Caridad (puramente funcional)
  • Limpio (puramente funcional)
  • Rizo
  • Curry
  • Erlang
  • F#
  • Haskell (puramente funcional)
    • CALIFORNIA
  • Salto
  • J
  • Alegría
  • Cometa
  • Ceceo
    • Clojure
    • Lisp común
    • Dylan
    • Pequeña B
    • Logo
    • Esquema
  • Lozano
  • Matematica
  • Miranda
  • ML
    • Estándar ML
    • Alicia
    • Ocaml
    • Mythryl
  • Nemerle
  • Ópalo
  • OPS5
  • Poplog
  • R
  • Q
  • REFAL
  • Russell
  • Scala
  • Hojas de calculo

La mayoría de estos idiomas tienen algunos elementos / influencias menores de la herejía no funcional; Los etiquetados "puramente funcionales" no lo hacen.

(Por lo que sé, los lenguajes de Programación Funcional son los únicos que fomentan las variables inmutables por filosofía. Puede haber lenguajes que tienen variables inmutables, por defecto, que no son Funcionales por paradigma. El concepto me suena bastante extraño, pero puedo '' No garantizo una declaración "nunca jamás" general, dado el vasto, vasto y vasto número de lenguajes de programación que hay por ahí. Solo diré que es, por lo que sé, extremadamente improbable.

Un comentarista ha sugerido que ADA es un lenguaje de programación imperativo / orientado a objetos con variables inmutables de forma predeterminada.


Sí.

Haskell y Erlang son dos ejemplos.


Todas las variables en XSLT solo pueden ser inmutables.


El análogo más cercano que puedo pensar es en Objective Caml . Las variables delimitadas por let son siempre inmutables, pero los campos de las estructuras (llamados registros en Caml) son inmutables solo por defecto, y es posible etiquetar un campo individual como mutable .

Entre los lenguajes funcionales, Objective Caml ha demostrado ser muy atractivo para los programadores de C. OCaml tiene bastantes construcciones imperativas tanto en el lenguaje como en las bibliotecas, por lo que la ruta de migración no es tan extraña. Y si realmente quieres objetos y un sistema de clases, también están allí.

El lenguaje .NET de Microsoft F # es un descendiente de Objective Caml, pero se han realizado algunos cambios para garantizar que sea un lenguaje .NET y no estoy informado sobre la mutabilidad. Pero si desea probar un lenguaje funcional como un cambio relativamente pequeño con respecto a su estilo de programación actual, es posible que desee investigar Objective Caml o F #.