Mostrando entradas con la etiqueta lenguaje. Mostrar todas las entradas
Mostrando entradas con la etiqueta lenguaje. Mostrar todas las entradas

lunes, 5 de febrero de 2024

Lo que conforma a un lenguaje de programación

 


De la Wikipedia:

Los lenguajes de programación están formados por un conjunto de símbolos (llamado alfabeto), reglas gramaticales (léxico/morfológicas y sintácticas) y semánticas, que en conjunto definen las estructuras válidas del lenguaje y su significado.

Es un sistema de notación para escribir programas de computadora; se describe por su sintaxis (forma) y semántica (significado), además de tener al menos una implementación en forma de compilador o intérprete, lo que permite ejecutar programas escritos en ese lenguaje.

La explicación simplista sería: es un lenguaje para hacer que la computadora obedezca nuestras instrucciones previamente creadas.

¿Pero qué diantres es lo que conforma a un lenguaje de programación?

Lo que conforma a un lenguaje de programación es:

  • Reglas sintácticas: Conjunto de reglas que definen las secuencias correctas de los elementos.
  • Reglas semánticas: Es el significado de las instrucciones en un lenguaje de programación y determina cómo se deben interpretar y ejecutar las acciones.
  • Un intérprete o compilador.

La sintaxis describe cómo se ve, mientras que la semántica describe lo que debe hacer. Para mayor información ver esto: https://gus.chat/blog/semantica-en-programacion-tipos-y-usos-mas-comunes/

Ejemplos de sintaxis:

def var nombreVar as type no-undo.

function nameFunction returns type(param1 as type, param2 as type, paramN as type):
   /*  do stuff */
end.

Como podemos ver, la sintaxis nos indica cómo debemos escribir las instrucciones, ya sea declaración de variables, operaciones aritméticas y/o lógicas y la definición de funciones o procedimientos. En este caso vemos la forma en que debemos definir variables y crear una función (para el ejemplo usamos OpenEdge ABL, en otros lenguajes la sintaxis cambia).

Ejemplo de semántica:

Si tomamos los ejemplos de arriba. En primer lugar vemos la declaración de variables. Una variable debe ser definida, tener un valor y ser implementada. En el caso de una función deberá tener un propósito definido, realizar alguna operación y ser invocada. La semántica nos dice el signififcado, el por qué de una instrucción.



Intérprete: es un traductor. Verificará las reglas sintácticas (como se escribe la instrucción) y semánticas (el significado de la instrucción) y traducirá a un lenguaje que la máquina (computadora) podrá ejecutar. Python y Perl usan intérpretes que ejecutan el código.


Compilador: es un conversor. No solo verificará las reglas sintácticas y semánticas sino que además creará un código ejecutable para que la computadorá lo ejecute. Relativamente más lento que un intérprete, pero más seguro. Esto porque no solo se conforma con interpretar sino en verificar el tipo de datos que se definen a la hora de escribir las instrucciones. C, C++ y Java usan compiladores que crean un ejecutable (ver la imagen de arriba).

Si te interesa crear un compilador podrías checar este sitio:

https://www.antlr.org/

Pepepepero ¿eso es todo?

No. Cualquier lenguaje de programación que se digne llamar así tendrá su propia sintaxis y semántica, así como paradigma (funcional, orientado a objetos, etc.). Como definir tipos de datos (en el caso de los lenguajes de tipado estático), estructuras de control (top-down, secuenciales e iterativas). Manejo de errores o excepciones. Aserciones. Estructuras de control (vectores, listas, nodos, mapas, árboles) . Manipulación de archivos. Acceso a bases de datos. Entre otras cosas más.

Enlaces:

https://www.antlr.org/

https://www.compilers.iecc.com/crenshaw/

domingo, 15 de mayo de 2016

Conociendo Java 8

Dicen que con los cambios vienen cosas mejores.  Esperemos que sea así. Java 8 nos trae nuevas características. Una de ellas son: las Lambdas. ¿Qué son las lambdas? ¿Para qué nos sirven?.  Las lambdas son un tipo de función. Es una función "anónima", es decir, que no está vinculada un nombre.

En lenguajes como Python tenemos algo como esto:

switch=[
    lambda n: 'Hola',
    lambda n: 'Que tengas un buen dia' if n == 1 else 'Tal vez no tengas un buen dia',
    lambda n: 'Hoy es un buen dia para empezar' if n == 2 else 'Tal vez otro dia puedas empezar',
]

opcion=raw_input('Introduce un numero ente 1 y 2:')
print switch[0](opcion)
print switch[1](opcion)


En Java 8 tenemos "las expresiones Lambda". Que se puede definir como un "nuevo estilo" o manera de programar usando Lambdas.

En el sitio oficial de Oracle tenemos esta explicación:
"They provide a clear and concise way to represent one method interface using an expression. Lambda expressions also improve the Collection libraries making it easier to iterate through, filter, and extract data from a Collection. In addition, new concurrency features improve performance in multicore environments."

Podemos escribir algo como esto:

Clase instancia = () -> hacerAlgo();

La función puede o no contener parámetros. Además no es necesario definir qué tipo de dato es (String, int, double, boolean, char).

Clase instancia = (String a) -> hacerAlgo(a);  

Ejercicio. Crearemos una interface "Servicio" que contenga un método llamado opera, elcual recibe dos parámetros a y b. Una clase principal con un método llamado "operacion"que recibirá tres parámetros,las variables a,b y una instancia de tipo Servicio. La operación a realizar es la suma.

import static java.lang.System.out;

public class Control{
    public static void main(String[] args) {
        Servicio s=(a,b) -> a-b;
         out.println("35 - 26 = " + new Control().operacion(35, 26, s));
    }

    private int operacion(int a,int b, Servicio servicio){
        return servicio.opera(a,b);
    }
}

interface Servicio{
    int opera(int a,int b);
}


El resultado será 35 - 26 = 9.


Links
http://viralpatel.net/blogs/lambda-expressions-java-tutorial/
http://stackoverflow.com/questions/16501/what-is-a-lambda-function

sábado, 23 de mayo de 2015

¿Por qué Perl?


   Tal vez a muchos no les llame la atención el lenguaje de programación Perl, tal vez ni sepan que existe, o que ventajas o desventajas tiene con respecto a lenguajes como Java o Python. Sin embargo, considero que no se pierde el tiempo en conocerlo.

   Cuando recién iniciaba la carrera, los profesores recomendaban usar lenguajes como C para aprender los conceptos básicos de la programación. Conforme pasaba el tiempo hablaban de lenguajes o entornos de programación como Visual Basic o Delphi (Pascal) y según ellos eran los ideales para conseguir un trabajo. Después con el boom de las aplicaciones web, PHP se convirtió en el lenguaje más popular.

 

  Lenguajes como Java y C# comenzaban a tener más adeptos, así como entornos de desarrollo o IDES como Visual Studio, Eclipse y NetBeans. Nadie hablaba de lenguajes como Perl o LISP. Eso era del conocimiento de los más nerds de los nerds.

   La primera vez que escuche sobre Perl fue en un foro sobre trucos de programación (no recuerdo el nombre) y servidores,se recomendaba el uso de ese lenguaje si querías ser administrador de sistemas y base de datos (si de esos gorditos bonachones que saben un buen de cosas y que te dan un buen de soluciones a tus dudas de programación y de sistemas). Había interesantes scripts para la administración de servidores, detección de intrusos en red, y hasta para la recuperación de datos. Eso sí algunos scripts eran bastante complejos de entender.

   Pero a todo esto ¿por qué  Perl? ... con este lenguaje se puede hacer todo, desde las clásicas aplicaciones tipo consola hasta aplicaciones web. Incluso aplicaciones con interfaz gráfica. Es relativamente fácil de aprender si tienes familiaridad con lenguajes como C o PHP (de hecho este último se inspiro en el).

   No es la octava maravilla del mundo, tienes sus ventajas y desventajas como cualquier otro.


Update:
Larry Wall explica por qué Perl es parecido al lenguaje humano:
Links
http://trabajodeprogramacionperl.blogspot.mx/p/que-es-y-para-que-sirve.html

martes, 27 de septiembre de 2011

Python, ejemplos prácticos


Sitio oficial:   http://www.python.org/
Sitio en México: http://pythonmexico.org/

Bueno lo prometido es deuda. He aqui ejemplos de programas en Python.  Espero les sirva.

1. ¿Cómo imprimir?

print "Hola usuario"

cadena="Soy buena onda"

print cadena

2. ¿Cómo crear una función?

def msgSinArgumentos():
  print "Yo no tengo parámetros"

def msgConArgumentos(cad):
   cad="Hola ",cad
   print cad

Ejemplos.
1. Factorial.py

'''

Crear una función para calcular el factorial

'''


def factorial(x):

    if x==0:

        return 1

    else:

        return x * factorial(x -1)


#main

numero=0

continuar='n'

print "Factorial de un numero"



while continuar!='s':

    continuar=raw_input('¿Desea realizar el cálculo? Si->s No-n: ')


while numero<=0:

    numero=int(raw_input('Introduce numero:'))

    resultado=factorial(numero)

      

  

print "El factorial de %d es %d" %(numero,resultado)


2.  Sumatoria.py

suma, numero, maxi=2, 4, 100

print "Inicio"

print "Sumatoria del 2+..+100"

while (numero<=maxi):

    suma=suma+numero

    numero=numero+2

    print "Suma parcial [",suma,"] no. ",numero," \n"


print "Suma total [",suma,"]"

print "Fin"

3. Bucles.py

from math import*


vo=0

vector=[0.25,0.50,0.75,1.0]

print "Inicio"

print "Bucles con vectores"

for i in vector:

    vo=vo+pow(i,2)

    print "Valor original= ",i," resultado= ",vo

print "Fin"

4. Menu.py

from math import*

def Funcion_Seno(x):

return cos(x)-x

def Funcion_Coseno(x):

return sin(x)-x

MX=30

resultado=0

contador=0

opcion=0

print "*** [ Funciones matemáticas en Python ] ***"

print"\n\t 1. Calcular función seno 2. Calcular función coseno 3. Salir"

while opcion<=0:

opcion=int(raw_input('Tu opción es:'))

if opcion==1:

print "Elegiste calcular función seno [sin(x)-x]"

while contador<=MX:

contador+=1

resultado=Funcion_Seno(contador)

print "\nValor = ",resultado," posición no. ",contador

elif opcion==2:

print "Elegiste calcular función coseno [cos(x)-x]"

while contador<=MX:

contador+=1

resultado=Funcion_Coseno(contador)

print "\nValor = ",resultado," posición no. ",contador

elif opcion==3:

exit()

else:

print "Opción inválida"


print "Bucles con vectores"

for i in vector:

    vo=vo+pow(i,2)

    print "Valor original= ",i," resultado= ",vo

print "Fin"
5.Area.py

#ejemplo de POO en Python


class Area:

def AsignaBase(self,base):

self.base=base

def AsignaAltura(self, altura):

self.altura=altura

def ObtenerBase(self):

return self.base

def ObtenerAltura(self):

return self.altura

def CalcArea(self):

return self.base*self.altura/2

#main

b, h=0, 0

print "**** [Cálculo del área]****"

MiCalculo=Area()

while b<=0:

b=float(raw_input('Base: '))

while h<=0:

h=float(raw_input('Altura: '))

MiCalculo.AsignaBase(b)

MiCalculo. AsignaAltura(h)

print "Base leida: %f"%MiCalculo.ObtenerBase()

print "Altura leida: %f"%MiCalculo.ObtenerAltura()

print "Área obtenida: %f"%MiCalculo.CalcArea()

6. Uso de while, para alcular la velocidad

dt,k1,k2,vo,maximo,cont=0.5,9.81,0.2,0,50,0

print "[Obtener velocidad]"

while (cont<maximo):

    vo=vo+(k1-(k2*vo))*cont

    cont=cont+dt

    print "",vo," --> periodo:[",cont,"]"

7. Menú sencillo en Python

def obtenerFahrenheit(gc):

    return (gc*1.8)+32


def obtenerCelsius(gf):

    return (gf-32)/1.8


salir="s"

opc=0

grados=0


while salir =="s":


    print "[Conversor de temperaturas]\n"

    print "1. Obtener grados fahrenheit"

    print "2. Obtener grados celsius"

    while opc<=0:

        opc=int(raw_input('Introduce opción:'))


    if opc==1:

        print "[Obtener fahrenheit]\n"

        while grados<=0:

            grados=float(raw_input('Introduce valor: '))

            print grados," celsius leidos"

            print "Grados fahrenheit obtenidos: ",obtenerFahrenheit(grados)

       


    if opc==2:

        print "[Obtener celsius]\n"

        while grados<=0:

            grados=float(raw_input('Introduce valor: '))

            print grados," fahrenheit leidos"

            print "Grados celsius obtenidos: ",obtenerCelsius(grados)

       

    else:

        print "opción no válida"


   

    salir=raw_input('Deseas realizar ota operación? (s/n):')

    print ""


    if salir=="n":

        print "adios"

8. Sustituir un número de un arreglo

'''

sustituir un elemento de un arreglo

'''


numeros=[1,2,3,4,5,6,7,8,9,10]

i,sustituto=0,564


for i in range(len(numeros)):

    if numeros[i]==6:

        numeros[i]=sustituto


    print numeros[i]



Próximo tema: Groovy, ejemplos prácticos

Jai un lenguaje de programación inspirado en C++

Hoy hablaremos de un nuevo lenguaje de programación llamado Jai . Se trata de un lenguaje de programación que está desarrolland...

Etiquetas

Archivo del blog