Esta tabla solo destaca algunas diferencias claves entre los lenguajes de programación C# y Clojure
Característica | C# | Clojure |
---|---|---|
Año de lanzamiento | 2000 | 2007 |
Desarrollador | Anders Hejlsberg (microsoft) | Richard Hickey |
Tipado | Estático | Dinámico |
Paradigma | multiparadigma, POO y funcional | Funcional, multiparadigma |
Sintaxis básica | Orientada a objetos | Basada en paréntesis |
crear variable |
| (def nombre "Paulina") |
concatenación de strings | Console.WriteLine("Nombre: " + Nombre); | (str "Hola" " " "mundo") ; Devuelve "Hola mundo" (require '[clojure.string :as str]) |
comentarios | //Declaracion de variables comentarios multilinea: /* Se declaran los metodos aqui estos metodos */ | ; Esto es un comentario en una línea (defn calcular-promedio [numeros] ; Calcula el promedio de una lista de números (let [suma (apply + numeros) cantidad (count numeros)] (/ suma cantidad))) ; Devuelve el promedio |
Funciones anónimas | Permite la creación de funciones anónimas utilizando la expresión lambda '=>' y el tipo . | Permite la creación de funciones anónimas utilizando la macro 'fn' o la función '#()' . |
Inmutabilidad | Mutabilidad predeterminada, se pueden usar palabras clave como 'readonly' para hacer que los miembros de clase sean inmutables. | Inmutabilidad predeterminada |
Colecciones | Arrays, Listas, Diccionarios, etc. | Listas, Vectores, Mapas, Conjuntos, etc. |
Iteración | Bucles tradicionales como ‘for' , ‘while' y ‘foreach' para la iteración de colecciones. | Utiliza funciones de orden superior como ‘map' , 'filter' , 'reduce' para iterar y transformar colecciones. |
Nullabilidad | Null y referencias nulas | Sin referencias nulas, utiliza el valor 'nil' para representar la ausencia de valor. |
Hilos | Programación multiproceso a través de hilos y proporciona bibliotecas como 'System.Threading' para manejar la concurrencia. | Programación concurrente, utiliza macros como 'pmap' para aprovechar la concurrencia en operaciones de colecciones. |
Sintaxis de función | Tipo NombreFunción(Parámetros) public string GetName() | (defn NombreFunción [Parámetros]) defn getName() |
Manejo de errores | Utiliza excepciones para el manejo de errores, permite capturar y lanzar excepciones utilizando bloques 'try-catch-finally' . | Utiliza excepciones para el manejo de errores, pero también utiliza valores especiales como 'nil' o ':error' para representar resultados no exitosos. |
Referencia: https://www.youtube.com/watch?v=2D8V50NWVnk&ab_channel=Mteherandev
Recuerda siempre seguir aprendiendo con mis cursos en mteheran.dev/cursos