Scala, un lenguaje de JVM y .Net

Scala es un lenguaje de programación multi-paradigma diseñado para expresar patrones comunes de programación en forma concisa, elegante y con tipos seguros. Integra sutilmente características de lenguajes funcionales y orientados a objetos. La implementación actual corre en la máquina virtual de Java y es compatible con las aplicaciones Java existentes(Fuente), agregan en Scala que también es compatible con .Net.
Scala entre otras bondades, sus programas pueden ser interpretados o compilados, para este ejemplo vamos a trabajar con el interprete.
Como Scala es un lenguaje funcional lo cual nos permite crear funciones y estas son un objeto. Vamos a definir una función multiplicar, cuando comienza con scala> significa que se está trabajando en el intérprete:
scala> def multiplicar(x: Int, y: Int): Int = x*y
scala> multiplicar(2,4)
res1: Int = 8
Esto significa que se ha creado una referencia al resultado de la operación llamado res1 el cual no puede variar su contenido su modificador es val.
En Scala podemos crear funciones anónimas, esto es una función que no tiene nombre y que puede ser asignada a una referencia o pasada por parámetro a otra función. Lo cual deja nuestra definición enterior en los siguientes terminos.
scala> val multiplica = (x: Int, y: Int) => x * y
a partir de este momento ya podemos usar la referencia multiplica de la forma:
scala> println(multiplica(2,4))
Acá solo imprime el valor, no como en el ejemplo anterior que imprimía su referencia también.
A veces necesitamos funciones parciales, lo que quiere decir que podemos crear una referencia a una función cuyos parámetros sean establecidos a medias o como su nombre indica parcialmente:
scala> val tabla2 = multiplica(2, _:Int)
El primer parámetro es inicializado con 2 y el segundo no se le asignó nada, el _ significa que es un parámetro sin establecer de tipo Int.
Por último vamos a escribir la tabla del 2
scala> for(i<-0 until11){
 |println("2 * " + i + " = "+ tabla2(i))
 |}
}
Los | son escritos por el intérprete lo que quiere decir que no se deben escribir de lo contrario genera error. La salida de la ejecución de esas definiciones, se ejecuta justo cuando se escribe el ultimo } es:
2*0=0
2*1=2
2*2=4
2*3=6
2*4=8
2*5=10
2*6=12
2*7=14
2*8=16
2*9=18
2*10=20.

Posted by Gabriel Jaime Sierra Rua | en 12:46 | 0 comentarios

Direferencias entre las javac y java

Motivado por el desconocimiento o confusión sobre las herramientas o utilidades, segun la distribución descargada (JDK o JRE) del lenguaje Java, quiero explicar la diferencia entre estas dos aplicaciones, java y javac.
El JDK es el conjunto de herramientas necesarias para ompilar un programa escrito en Java; mientras que el JRE es el conjunto de utilidades requeridas para interpretar un programa Java.
Teniendo claro esto pasemos al objeto principal, la descripción de las herramientas.

  • javac: Lee las definiciones de clases, interfaces y enumeraciones escritas en Java compilandolas y generando archivos de tipo codigo de bytes para ser interpretado por la JVM en caso que la compilación sea exitosa, de lo contrario nos mostrará los errores en los respectivos archivos. Esta herramienta está presente en el JDK. [Origen]
  • java: Realiza la ejecución de la aplicación Java, para ello se crea un entorno de ejecución java realizando la carga de la clase especificada buscando el método principal cuya declaracion es public static void main(String[] arg) {...} o public static void main(String... arg){...}. En caso de ser un jar (java archive) busca en el archivo MANIFEST.MF la clase que indica el punto de entrada de la aplicación y que se encarga de hacer el llamado a las librerías necesarias para reservar los "Slots" de memoria para su ejecución. Está presente tanto en el JDK como en el JRE. [Origen] 
Bonus:
  • javaw: Este es identico a java, la única diferencia es que no lanza una ventana terminal, se debe usar cuando no se requiera un prompt pero lanzará una ventana con un mensaje cuando un error ocurra. Está presente tanto en el JDK como en el JRE. [Origen]
  • javadoc: lee los archivos .java especificados o todos los .java de un directorio leyendo los atributos/miembroscon sus comentarios, si tienen,  que se encuentren en /** comentario*/ generando un html con el estándar de estilos propuesto por Sun Microsystems o el estándar nuevo propuesto por Oracle

Posted by Gabriel Jaime Sierra Rua | en 15:02 | 0 comentarios

Apólogo del paraíso

Eva, transformada en serpiente, ofreció a Adán una manzana.
Fueron arrojados del Paraíso, pero ellos llevaron semillas consigo,
y Adán y Eva encontraron otra tierra y plantaron allí las semillas del paraíso.

Podemos ahcer siempre el paraíso alrededor nuestro dondequiera que nos encontremos.
Para eso sólo se requiere estar desnudos.
Jaime Jaramillo Escobar
Los poemas de la ofensa

Posted by Gabriel Jaime Sierra Rua | en 11:30 | 0 comentarios

No necesita presentacion


Posted by Gabriel Jaime Sierra Rua | en 0:41 | 0 comentarios

Instalar LibreOffice y desinstalar por completo OpenOffice

Bueno pues muchos lo sabrán, el tema no es tan complicado son solo unas cuantas tecladitas en la consola y ya quedará instalado y listo para actualizarse cuando sea necesario.
Llo primero desinstalar la suite OpenOffice
sudo apt-get purge openoffice*.
luego de esto debemos agregar LibreOffice a nuesto PPA
sudo add-apt-repository ppa:libreoffice/ppa
seguido actualizamos las fuentes con un simple
sudo apt-get update
luego ahora si instalamos LibreOffice
sudo apt-get install libreoffice
y por ultimo para tener una mayor compatibilidad con nuestro entorno entonces escribimos para Gnome
sudo apt-get install libreoffice-gnome
y para KDE
sudo apt-get install libreoffice-kde
y listo pelaos as

Posted by Gabriel Jaime Sierra Rua | en 21:49 | 0 comentarios