Comparacion de Lenguajes de Programacion


Encontre en varios sitios en la red, comparaciones de diferentes lenguajes de programacion con automoviles. Creo que esto ayudara mucho a tener una idea o noción de lo que cada uno se enfrenta al intentar aprender un nuevo lenguaje. Cada lenguaje en si nos abre una nueva herramienta, que solo puede ser usada apropiadamente si sabemos para que la vamos a utilizar. No tiene mucho sentido aprender un lenguaje por el hecho de conocer algo adicional, si en realidad no sabremos donde utilizarlo. Por ahora, disfruten de esta divertida comparación:

C: es un coche de carreras que va increiblemente rápido pero que cada 50 Km se avería.

C++: es un coche de carreras que tiene de todo con decenas de extras y sólo se avería cada 250 Km, pero cuando lo hace nadie sabe porqué se ha estropeado.

Java: es un coche familiar tipo furgoneta. Fácil de conducir, no demasiado rápido y no te puedes hacer daño.

C#: es un modelo de coche familiar tipo furgoneta que está compitiendo en el mercado. Una vez que lo usas no se te está permitido usar los productos de la competencia.

Lisp: se parece a un coche, pero tuneándolo lo suficiente lo puedes convertir en un avión o submarino lo bastante funcional.

Prolog: es totalmente automático: le describes qué aspecto tiene tu destino y conduce por ti, pero el esfuerzo necesario en describir la mayoría de destinos es equivalente a conducir hasta ellos.

Perl: se supone que es un coche bastante chulo, pero el manual del conductor es incomprensible. Y aunque llegues a saber cómo conducir tu coche perl, no sabrás conducir el de nadie más.

Python: es un magnífico coche para principiantes; lo puedes conducir sin carnet. A no ser que lo quieras conducir en vías muy rápidas o terrenos peligrosos, puede que no necesites ningún otro coche.

Smalltalk: es un coche originalmente diseñado para gente que estaban aprendiendo a conducir, pero se diseñó tan bien que incluso conductores con experiencia disfrutan conduciéndolo. No es muy rápido, pero puedes cambiar cualquier pieza para dejarlo más a tu gusto. Una excentricidad que tiene es que realmente no lo conduces; le envías un mensaje pidiéndole ir a algún sitio y entonces te lo hace o te dice que no ha entendido lo que le preguntas.

Ruby: es un coche que se creó cuando los coches Perl, Python y Smalltalk chocaron los 3 juntos. Un mecánico japonés encontró las piezas y montó un coche que muchos opinan que es mejor que la suma de sus partes.

Fortran: es un coche primitivo; irá muy rápido siempre y cuando sólo vayas por vías que son perfectamente rectas. Se cree que aprender a conducir un coche Fortran hace que luego sea imposible aprender a conducir cualquier otro modelo de coche.

Cobol: se supone que es un coche, pero cualquier conductor que se respete nunca admitirá haber conducido uno.

Forth: es un coche que te montas tú mismo de un kit. Tu coche no se tiene porqué parecer o comportar como el coche de nadie más, pero un coche Forth sólo se mueve hacia atrás.

Lenguaje ensamblador: es sólo el motor; te tienes que montar el coche tú mismo y ponerle gasolina mientras corre pero si vas con cuidado irá como una bala.

tomado del ingles: http://www.cs.caltech.edu/~mvanier/hacking/rants/cars.html

Y ahora, con cual automovil te gustaria comenzar?...

Complejidad Computacional

La complidad computacional es un area de las Ciencias de la Computacion
que estudia el usos de los recursos para resolver un problema durante el calculo de los algoritmos respectivos.

Los 2 recursos principalmente analizados son:Publicar entrada
  1. Tiempo
  2. Espacio (memoria9
En la actualidad las computadoras resuelven a lo sumo problemas que tienen complejidad Polinomica (Ver Ciencias de la Computacion - Complejidad)
Los problemas que no se resuelven con nuestras computadoras actuales ( no se podrian resolver en un tiempo adecuado), poseen una complejidad del Tipo Factorial o Exponencial

Computacion, automatas, complejidad y computabilidad

El campo de la Teoría de la computación en Ciencias de la computacion involucra las subareas de

  1. Teoría de la computación
  2. Teoría de autómatas: estudia matemáticamente máquinas abstractas y problemas que éstas son capaces de resolver
  3. Teoria de la computabilidad: estudia los problemas de decisión que pueden ser resueltos con un algoritmo o equivalentemente con una máquina de Turing.
  4. Teoría de la complejidad computacional: Estudia teoricamente los recursos requeridos durante el cálculo para resolver un problema (tiempo y espacio)

Criptografia, grafos, logica y tipos

El campo de los Fundamentos matemáticos de las Ciencias de la Computacion involucra la criptografia, teoria de grafos, logica y teoria de tipos

  1. Criptografía: Algoritmos de proteccion de datos privados y cifrado de informacion
  2. Teoria de grafos: Estructuras de almacenamiento de datos y algoritmos de busqeda (problemas como del viajante, o la mejor ruta son clasicos en la tematica)
  3. Logica matemática: Se divide en cuatro subcampos: teoría de modelos, teoría de la demostración, teoría de conjuntos y teoría de la recursión.
  4. Teoria de tipos: Estudio y analisis sobre los tipos de datos y u aplicacion en las propiedades de los programas y su seguridad

Campos de Estudio de las Ciencias de la Computacion

Campos de Estudio de las Ciencias de la Computacion

  • Fundamentos matemáticos
  • Teoría de la computación
  • Algoritmos y estructuras de datos
  • Lenguajes de programación y compiladores
  • Bases de datos
  • Sistemas concurrentes, paralelos y distribuidos
  • Inteligencia artificial
  • Gráficos por computador
  • Computación científica

Logros de las Ciencias de la Computacion

Logros de las Ciencias de la Computacion:
Contribuciones fundamentales a la ciencia y la sociedad.

  • Definición formal de computación y de computabilidad
  • Demostración de que existen problemas a los que no hay una solución computacional y problemas intratables.
  • Concepto de lenguaje de programación, una herramienta para la expresión precisa de información metodológica con diferentes niveles de abstracción
  • Tecnologías revolucionarias: computadoras de uso general, Internet, firmas digitales, comercio electrónico y los motores de búsqueda
  • Nuevas formas de investigación científica: Física computacional Química computacional

Ciencias de la Computacion Historia

Ciencias de la Computacion:
La historia es anterio a que se inventara la computadora
Antes de 1920 , el término computador habalaba de un ser humano que realizaba cálculos

Los primeros investigadores en la cuestión de la computabilidad querian saber
  • Qué cosas pueden ser computadas por un ser humano (siguiendo una lista de instrucciones por escrito)l, sin conocer el problema con anterioridad durante el tiempo que fuesea necesario
La motivación para este trabajo era realiza máquinas que computaran, y que pudieran automatizar labores y tareas largas y tediosas para una persona (que ademas podias tener errores)
En década de 1940 mientras se realizaban computadoras, el término computador se comenzó a utilizar para las máquinas en lugar de las personas.
El campo de las ciencias de la computación se fue ampliando mientras se veia que se podan realizar mas cosas que calculos matematicos para estudiar a la informática) en general.

La ciencia de la computación se estableciocomo una disciplina académica en la década del 60, con los primeros departamentos de ciencias de la computación en las universidad y las licenciatura respectivas.

Ciencias de la Computacion

Las ciencias de la computación es el estudio de las bases teóricas de la información y la computación ademas de su aplicación practica en sistemas computacionales.(Wikipedia)

Diferenctes campos de estudio:
  • Resultados específicos del cómputo (ej gráficos por computadora),
  • Teoría de la complejidad computacional)
  • Problemas que requieren la implementación de cómputos.

Programas y Algoritmos

Definicion de Algoritmo
Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse para resolver un problema. Un programa normalmente implementa (traduce a un lenguaje de programación concreto) un algoritmo. Nótese que es la secuencia de instrucciones en sí la que debe ser finita, no el número de pasos realizados como la ejecución de ellas.
Programas
Los programas suelen subdividirse en partes menores (módulos), de modo que la complejidad algorítmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al desarrollo del programa.

Según Niklaus Wirth un programa está formado por algoritmos y estructura de datos.

Se han propuesto diversas técnicas de programación, cuyo objetivo es mejorar tanto el proceso de creación de software como su mantenimiento. Entre ellas se pueden mencionar las programaciones lineal, estructurada, modular y orientada a objetos.

Cursos y Tutoriales de Programacion en Oferta

Cursos y Tutoriales de Programacion (JAVA, Linux, ASP, PHP, Visual Basic)

Sap Programacion(cd)consultoria T\los Modulos Mm-Sd-Fico...
Precio: $50.00
Curso De Programacion Java En Video / * Curso Java Dvd * /
Precio: $64.99
200 Manuales De Programaci�n Php Asp Linux Java Env�o Gratis
Precio: $20.00


Curso A Distancia - Programacion Con Visual Basic 6 - Utn
Precio: $169.00
Java - Todo Lo Que Necesita Saber
Precio: $9.99









Curso Php Y Mysql - 61 Videos De 43 Horas! En Dvd! El Mejor

Precio: $15.00



Lenguaje "C" libros y tutoriales

Fuente: Lenguaje "C" libros y tutoriales

http://www1.ceit.es/Asignaturas/Informat2/C/Prog_c.htm http://mundolinux.iespana.es/progr/manc/ http://www.programaenc.8m.com/ http://sopa.dis.ulpgc.es/so/cpp/intro_c/ http://programandoenc.webcindario.com/ http://www.ulpgc.es/otros/tutoriales/mtutor/indice.html http://www.tutoriales.com/ http://www.elrincondelc.com/nuevorincon/index.php?pag=codigos http://www.infomanuales.com/Manuales/C/C.asp

Fuente: Lenguaje "C" libros y tutoriales

Estudiar Informatica en la UNNOBA

Dentro del área de Informática, la UNNOBA ofrece carreras cortas que permiten atender necesidades propias de la región y carreras de grado para satisfacer requerimientos de Pymes, en especial para la explotación industrial, agrícola y ganadera. La coordinadora de las carreras de Informática, Luciana Balbi, reseñó las cinco variantes que ofrece la UNNOBA, así como el campo profesional de cada una de ellas.
La carrera más corta que se dicta en el área de Informática de la UNNOBA es la de Programador Universitario, de 2 años de duración. Según Balbi, en este pregrado el alumno recibe una amplia formación práctica que le permite la aplicación inmediata de sus conocimientos en al área laboral. «Esto implica la posibilidad de desarrollar sitios de Internet, como así también aplicaciones multimedias», señaló la coordinadora.
En el caso de la carrera Analista de Sistemas, de 3 años, el egresado está capacitado para relevar y analizar los procesos funcionales de distintas organizaciones, teniendo en cuenta las nuevas tecnologías y herramientas para el desarrollo de software.
La carrera Licenciatura en Sistemas es una carrera de grado de 4 ½ años de duración que le permite al egresado diseñar y gerenciar proyectos en sistemas de información computarizada.

Además de esta licenciatura, la UNNOBA ofrece otras dos carreras de grado que tienen 5 años de duración: ingeniería en informática con orientación procesamiento de señales e ingeniería en informática con orientación software.
«Los profesionales de la orientación procesamiento de señales son los que se encargarán de diseñar, desarrollar e implantar sistemas de apoyo al diagnóstico por imágenes, además de sistemas de procesamiento de imágenes satelitales y de sonido», informó Balbi.
En tanto, los que elijan la orientación software estarán capacitados para dirigir y conducir la configuración de los proyectos de software. «También establece y planifica las prácticas de desarrollo, mantenimiento y migración de sistemas informáticos», agregó la coordinadora.

Otra de las ventajas de estudiar Informática en la UNNOBA está relacionada con la flexibilidad de sus planes de estudio. «La cantidad de asignaturas comunes entre las diferentes carreras de Informática le permiten al alumno no tener que tomar una decisión definitiva inicial en la elección de la carrera», explicó Balbi y añadió que el estudiante, en el caso de que opte por seguir una carrera corta, podrá decidir si continúa sus estudios en una carrera de grado «al mismo tiempo que se inserta en el mercado de trabajo». Los ingresantes de las carreras de Informática en 2008 deberán transitar por el curso de ingreso nivelatorio, con dos asignaturas: matemática e introducción a los sistemas de información.
Trabajarán sobre las siguientes temáticas: resolución de problemas (teoría y técnicas), ciclo de vida del desarrollo de sistemas, algoritmos, conceptos básicos de programación y sistemas de información, entre otras.

Las expectativas laborales

“Las expectativas laborales para cualquiera de las cinco variantes de informática son inmejorables, en virtud de que la demanda de profesionales triplica la oferta del mercado, tanto en Junín y la región como en el resto del país”, señaló Balbi. En este marco, el Ministerio de Educación de la Nación inició en 2006 una campaña de difusión de carreras informáticas y las declara «prioritarias» para el desarrollo del país.
El secretario de Políticas Universitarias de la Nación, Alberto Dibbern, dijo que un relevamiento hecho por la Cámara Empresaria de Software y Servicios Informáticos marca que la demanda de técnicos y profesionales del sector no está cubierta actualmente.




Servidores Dedicados

Uno de los problemas mayores al crecer nuestro sitio web es obtener un buen hosting, ya sea que necesitemos un Plan Grande, un VPS o un Servidor Dedicado.
Hay buenas opciones en el mercado, algunas mas seguras que otras.

Liquid Web
Es una empresa que brinda buenos dedicados administrados y es una de nuestras recomendaciones.


Si otras empresas de Hosting nos quieren mandar servicios para evaluqr con todo gusta las publciaremos

TAD Pilas Implementacion en Pascal

Unidad Pila Implementacion del TADA para PASCAL
Codigo:
unit upila ;

INTERFACE
CONST MAX_PILA = 10;
type
tpila = Record
Cima : Integer;
Elementos : Array[1..MAX_PILA] of Integer;
End;



IMPLEMENTATION

Procedure crear(Var pila : tpila);
begin
pila.cima := 0
end;


Function vacia(Var pila : tpila) : Boolean;
begin
vacia := pila.cima = 0
end;



Function llena(Var pila : tpila) : Boolean;
begin
llena := pila.cima = MAX_PILA
end;



Procedure apilar(Var pila : tpila; elem : integer);
begin
Inc(pila.cima);
pila.elementos[pila.cima] := elem
end;



Procedure desapilar(Var pila : tpila; Var elem : integer);
begin
elem := pila.elementos[pila.cima];
dec(pila.cima)
end;
end.

Assembler El lenguaje ensamblador

El término ensamblador (del inglés assembler) se refiere a un tipo de programa informatico que se encarga de traducir un fichero fuente escrito en un lenguaj ensamblador, a un fichero objeto que contiene codigo máquina, ejecutable directamente por la máquina para la que se ha generado. El propósito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de programas, ya que escribir directamente en codigo binario, que es el único código entendible por la computadora, es en la práctica imposible. La evolución de los lenguajes de programación a partir del lenguaje ensamblador originó también la evolución de este programa ensamblador hacia lo que se conoce como programa compilador.

Todo procesador, grande o pequeño, desde el de una calculadora hasta el de un supercomputador, ya sea de propósito general o específico, posee un lenguaje único que es capaz de reconocer y ejecutar. Por razones que resultan obvias, este lenguaje ha sido denominado Lenguaje de Máquina y más que ser propio de un computador pertenece a su microprocesador. El lenguaje de máquina está compuesto por una serie de instrucciones, que son las únicas que pueden ser reconocidas y ejecutadas por el microprocesador. Este lenguaje es un conjunto de números que representan las operaciones que realiza el microprocesador a través de su circuitería interna. Estas instrucciones, por decirlo así, están grabadas o "alambradas" en el hardware y no pueden ser cambiadas. El nivel más bajo al que podemos aspirar a llegar en el control de un microprocesador es precisamente el del lenguaje de máquina.


Los traductores se dividen en dos grupos dependiendo de la relación entre lenguaje fuente y lenguaje objeto. Cuando una instrucción de un lenguaje fuente nos genera una única instrucción numérica máquina decimos que ese lenguaje fuente es Ensamblador.

La transformación del lenguaje ensamblador en código máquina la realiza un programa ensamblador, y la traducción inversa la puede efectuar un desensamblador. A diferencia de los lenguajes de alto nivel, aquí hay usualmente una correspondencia 1 a 1 entre las instrucciones simples del ensamblador y el lenguaje máquina. Sin embargo, en algunos casos, un ensamblador puede proveer "pseudo instrucciones" que se expanden en un código de máquina más extenso a fin de proveer la funcionalidad necesaria. Por ejemplo, para un código máquina condicional como "si X mayor o igual que" , un ensamblador puede utilizar una pseudoinstrucción al grupo "haga si menor que" , y "si = 0" sobre el resultado de la condición anterior. Los ensambladores más completos también proveen un rico lenguaje de macros que se utiliza para generar código más complejo y secuencias de datos.

articulo.org

Pascal

Free pascal


Open source compiler for Pascal and Object Pascal

Si queres aprender programacion Pascal es el lenguaje indicado.
Un compilador Libre es FreePascal
www.freepascal.org

Hechos en Programacion Logica PROLOG

Para representar los hechos basta elegir los símbolos de los átomos.
Por ejemplo
Hecho : El animal tiene rayas negras.
se representa en Prolog por tiene_rayas_negras.

Es decir, el símbolo del átomo terminado en un punto.
Los hechos pueden verse como cláusulas con el cuerpo vacío.
Para representar la base de conocimiento en Prolog, se escribe en un fichero (por ejemplo,
animales.pl) cada una de las reglas y los hechos

es_cebra :- es_ungulado, tiene_rayas_negras. % Regla 1
es_ungulado :- rumia, es_mamífero. % Regla 2
es_ungulado :- es_mamífero, tiene_pezuñas. % Regla 3
es_mamífero. % Hecho 1
tiene_pezuñas. % Hecho 2
tiene_rayas_negras. % Hecho 3

Al lado de cada regla y de cada hecho se ha escrito un comentario (desde % hasta el final de la
línea).



Basado en Introducción a la programación lógica con Prolog de José A. Alonso Jiménez

La obra está bajo una licencia Reconocimiento–NoComercial–CompartirIgual 2.5 Spain de Creative Commons.








Programacion Logica PROLOG Reglas Primeros Paso

A parir de este POST y en sucesivos comentarios publicaremos sobre Programcion LOGICA y PROLOG.
Combinaremos comentarios nuestras con apuntes del libro
Introducción a la programación lógica con Prolog de José A. Alonso Jiménez

La obra está bajo una licencia Reconocimiento–NoComercial–CompartirIgual 2.5 Spain de Creative Commons.
Para resolver unp roblema con Prolog vamos a considerar las siguientes cuestiones:
1. cómo se representan en Prolog las reglas,
2. cómo se representan en Prolog los hechos,
3. cómo se representan en Prolog las bases de conocimientos,
4. cómo se inicia una sesión Prolog,
5. cómo se carga en Prolog la base de conocimiento,
6. cómo se representa en Prolog el objetivo a demostrar,
7. cómo se interpreta la respuesta de Prolog,
8. cómo ha realizado Prolog la búsqueda de la demostración,
9. cuál es la demostración obtenida y
10. cómo se corresponde dicha demostración con la anteriormente presentada.

PASO A PASO
Regla 1: Si un animal es ungulado y tiene rayas negras, entonces es una cebra.

Para representar una regla, se empieza por elegir los símbolos para los átomos que aparecen
en la regla.
Podemos elegir los símbolos es_ungulado, tiene_rayas_negras y es_cebra.
La regla 1 puede representarse como
Si es_ungulado y tiene_rayas_negras entonces es_cebra

se representa en Prolog, mediante la cláusula
es_cebra :- es_ungulado , tiene_rayas_negras.
Se cambia el sentido de la escritura y sustituir las conectivas por :- (condicional inversa) y , (conjunción).
El átomo a la izquierda de :- se llama la cabeza y los átomos a la derecha se llama el cuerpo de la regla.

Los mejores programadores

"Los mejores programadores pueden ser 20 veces más productivos que los medios"

"El 50% de los programadores se consideran a si mismos que están en la categoría de los mejores, pero en realidad sólo está el 1%"

Lawrence Bernstein