domingo, 12 de febrero de 2012

10 LENGUAJES DE PROGRAMACION QUE USTED DEBE APRENDER AHORA!

Entre miles, de 10 lenguajes de programación se destacan por su capacidad de comercialización y el uso de ancho de trabajo. Si usted está buscando para impulsar su carrera o aprender algo nuevo, comienza aquí.

El conocimiento de un puñado de lenguajes de programación es visto por muchos como un puerto en una tormenta mercado de trabajo, habilidades sólidas que serán negociables siempre y cuando los idiomas son.

Sin embargo, hay belleza en los números. Si bien pueden existir los desarrolladores que han tenido las riquezas amontonadas sobre ellos por conocer el lenguaje de programación adecuado en el momento justo en el lugar correcto, la mayoría de los codificadores de toda la vida le dirá que, periódicamente, aprender un nuevo idioma es una parte esencial de ser un buen sitio en Internet y con éxito desarrollador.

"Uno de mis mentores me dijo una vez que un lenguaje de programación es un lenguaje de programación. No importa si eres un buen programador, es el sintaxis que importa", dijo Tim Huckaby, director ejecutivo de la sede en San Diego de ingeniería de software CEO de la compañía Interknowlogy.com , dijo a eWEEK.

Sin embargo, Huckaby dijo que aunque su compañía está "nadando" en el trabajo, es teniendo un tiempo casi imposible encontrar reclutas, incluso en el nivel de entrada, que saben lenguas de programación específicos.

"Se está contratando como locos, pero no se tiene un tiempo fácil. Estaban en busca de 
actitud y aptitud, los niños que acaban de salir de la escuela que conocemos .Net o Java, incluso, porque con el que podemos entrenar en .Net," dijo Huckaby .

"No se aferran a uno o dos idiomas. Cuando empecé en el año 1969, FORTRAN, COBOL y ensamblador de S/360 fueron los grandes Lenguajes. Hoy en día, Java, C y Visual Basic lo son. Dentro de 10 años, un nuevo conjunto de las Lenguajes estarán de moda .... En el último recuento, yo sabía / han aprendido más de 24 idiomas diferentes en más de 30 años ", dijo Wayne Duqaine, director de Desarrollo de Software en Sistemas de Grandview, de Sebastopol, California, eWEEK.



Al elegir los cerebros de los desarrolladores web y de selección de personal de TI, eWEEK seleccionó 10 lenguajes de programación que son una ventaja para los desarrolladores para añadir a su currículum. Incluso mejor, theyre grandes saltos fuera de los puntos, con un montón de oportunidades de empleo para jóvenes reclutas.



1. PHPQué es: Un código abierto, interpretativo, del lado del servidor, multi-plataforma, lenguaje de secuencias de comandos HTML, especialmente adecuado para el desarrollo Web, ya que puede ser embebido en páginas HTML.¿Por qué debes aprenderlo: Es particularmente ampliamente utilizado. "La alta velocidad de las secuencias de comandos con el almacenamiento en caché, aumentada con el código compilado de plug-ins (por ejemplo, se puede hacer con Perl y PHP) es donde está el futuro. La construcción de aplicaciones web desde cero usando C o COBOL va por el camino de los dinosaurios"dijo Duquaine.Disponibilidad de empleo: 1.152 *



2. C #Qué es:. De propósito general, compilado, orientado a objetos lenguaje de programación desarrollado por Microsoft como parte de su iniciativa de NET, que evolucionó a partir de C y C + +¿Por qué debes aprenderlo: Es una parte esencial del marco de Internet.. "El aprendizaje de C #, que es sólo de Java con una placa de características diferentes, es esencial si usted usa mucho Microsoft", dijo Duquaine.Disponibilidad de empleo: 5.111



3. AJAX (Asynchronous JavaScript and XML)Qué es: Aunque técnicamente no es un lenguaje de programación AJAX utiliza XHTML o HTML, JavaScript y XML para crear aplicaciones web interactivas.¿Por qué debes aprenderlo: Desde que Google Maps pone AJAX, así, en el mapa, las solicitudes de profesionales con conocimientos en AJAX fue por las nubes. "La demanda de conocimientos de AJAX es enorme debido a que su tan condenadamente difícil de aprender", dijo Huckaby. Cabe destacar que Microsoft ha anunciado recientemente planes para lanzar una herramienta llamada Atlas que hará más fácil de implementar AJAX. "Si Microsofts herramienta de Atlas tiene éxito, traería la extrema complejidad y la molestia de AJAX para el trabajador promedio", dijo Huckaby.Disponibilidad de empleo: 1.106



4. JavaScriptQué es: No se debe confundir con Java, JavaScript es un uno orientado a objetos, lenguaje de programación de secuencias de comandos que se ejecuta en el navegador Web en el lado del cliente. Su más pequeño que el de Java, con un conjunto simplificado de comandos, más fácil de código y no tiene que ser compilado.¿Por qué debes aprenderlo: embebido en páginas HTML, su utiliza en millones de páginas web para validar formularios, crear cookies, detectar navegadores y mejorar el diseño. Con su sencillez para aprender así como el uso de ancho, la considera una gran explosión de su inversión educativa.Disponibilidad de empleo: 4.406



5. Perl Qué es: Perl es un código abierto, multiplataforma, del lado del servidor lenguaje de programación interpretativo utilizado ampliamente para procesar el texto a través de programas CGI.¿Por qué debes aprenderlo: el poder Perls en el procesamiento de pilas de texto ha hecho muy popular y ampliamente utilizado para escribir programas de servidor Web para una amplia gama de tareas. "Aprender el lenguaje de scripts, como Perl o PHP es esencial si usted está haciendo las aplicaciones web", dijo Duquaine.Disponibilidad de empleo: 4.810



6. Qué es: Un estándar de uso general lenguaje de programación, es una de las lenguas más extendidas y la base para muchos otros (como C + +).¿Por qué usted debe aprender: "Aprender C es crucial Una vez que aprendas C, dar el salto a Java o C # es bastante fácil, porque mucha de la sintaxis es común también, una gran cantidad de sintaxis de C se utiliza en lenguajes de script,.. ", dijo Duquaine.Las disponibilidades de trabajo: 6.164, incluyendo todos los derivados



7. Ruby y Ruby on RailsQué son: Ruby es un proceso dinámico, orientado a objetos, de fuente abierta lenguaje de programación, Ruby on Rails es un framework web de código abierto aplicación escrita en Ruby que sigue de cerca la arquitectura MVC (Model-View-Controller) de la arquitectura.¿Por qué usted debe aprender: Con un enfoque en la simplicidad, la productividad y permitir que los ordenadores hagan el trabajo, en unos pocos años, su uso se ha extendido rápidamente. Como beneficio adicional, a muchos les resulta fácil de aprender.Las disponibilidades de trabajo: 210 y 54, respectivamente



8. Java Qué es: Un lenguaje de programación orientado a objetos desarrollado por James Gosling y sus colegas en Sun Microsystems a principios de 1990.¿Por qué debes aprenderlo: Considerado por muchos desarrolladores como un "bello" idioma, es fundamental para la experiencia en programación no .Net. "El aprendizaje de Java es crítico si no son de Microsoft", dijo Duquaine.Disponibilidad de empleo: 14.408



9. PythonQué es: interpretado de forma dinámica orientada a objetos, de código abierto que utiliza el lenguaje de programación de la gestión de memoria automática.¿Por qué debes aprenderlo: Diseñado para ser un muy fácil de leer, el lenguaje minimalista, muchos dicen que tiene un sentido del humor (correo no deseado y los huevos, en lugar de foo y bar), Python se utiliza ampliamente por Google, así como en el mundo académico debido a su la sencillez sintáctica.Las disponibilidades de trabajo: 811



10. VB.Net (Visual Basic. Net)Qué es: Un lenguaje orientado a objetos implementado en Microsofts Net Framework..¿Por qué debes aprenderlo: La mayoría asegura que VB.Net es actualmente más popular que nunca y uno de los pocos "hay que aprende." "En la actualidad está dominando en la adopción y ahí es donde todo el trabajo es", dijo Huckaby.Disponibilidad de empleo: 2.090

* Todos los números sobre la disponibilidad de trabajo fueron sacados a partir de consultas a nivel nacional en Dice.com, un lugar de trabajo para los profesionales de la tecnología.

¿QUE ES RAID?

Si usted está en el negocio de la informática donde la seguridad de los datos y la disponibilidad son cruciales en todo momento, lo más probable es que usted podría haber encontrado ya o aún trabajaba con RAID. ¿Qué es RAID? No es una cosa viva, pero se ha vuelto muy popular y vital en serio en muchas organizaciones con múltiples usuarios a través de diferentes lugares e incluso los usuarios domésticos que acceden varias imágenes a la vez. RAID es un acrónimo de Redundant Array of Independent Disks o a veces se denomina matriz redundante de discos económicos. Este último ha sido acuñado sobre todo para ilustrar la capacidad de mejorar en general el rendimiento del equipo y la seguridad de los datos mediante el uso de múltiples discos de bajo costo.


Con el fin de bajar a los pros y los contras de la eficiencia de diferentes niveles de RAID, es más adecuado para hacer algo de claridad a la terminología RAID muchos. Rayas es la cantidad de datos se distribuyen y se escribe en los discos de varios que serán establecidos en una matriz, ya sea por nivel de byte o bit de nivel. La replicación es el proceso mediante el cual los datos escritos en el otro disco se copia en los otros discos simultáneamente, creando una réplica redundante de la otra. La paridad en el otro lado es el uso junto con rayas y es procedimiento de cálculo que permite la matriz en la determinación de qué información tiene que ser almacenado en los discos. 


Niveles estándar Dependiendo de la prioridad del usuario, hay niveles de RAID que se pueden establecer para dar un mayor énfasis en algunas decisiones organizativas y de negocio cruciales para la operación, tales como aumento de rendimiento informático, seguridad de datos, disponibilidad de datos, y la capacidad de almacenamiento de datos.





RAID 0
Esta matriz se utiliza sobre todo por los usuarios que pagan más por la computación de alto rendimiento. El adagio que dice "dos cabezas piensan mejor que uno" es válido para esta configuración. Se permite, pero no ofrece ninguna duplicación o redundancia en el proceso. El mayor rendimiento se hace posible con los datos de forma en que se almacenan y se dividieron en varios discos de la matriz. Esto funciona de maravilla para los de la mirada hacia fuera para acelerar la lectura y escritura funcionalidad de cómputo.




RAID 1Esta configuración ofrece ninguna rayas, pero permite el reflejo en el proceso. Como los datos son idénticamente escritas en varios discos de la matriz, hay una pequeña chance de perder los datos, incluso si los otros discos no en el proceso. Sin embargo, el rendimiento es un poco comprometida en comparación con RAID 0 de matriz como el proceso de escritura en un solo disco puede tardar un poco más en comparación con tener que dividir en varios discos.








RAID 2Es ejecutado por dividir los datos en el nivel de bits y extendiéndola sobre designados discos y discos de datos de redundancia.Los bits redundantes se calculan utilizando los códigos de Hamming, una forma de código de corrección de errores (ECC).



RAID 3Esta matriz es puesta a punto en bandas está en el buen nivel de byte y con disco de paridad dedicado. Esto significa que cada archivo se divide entre las unidades de rayas por igual, byte a byte, y esto es lo que lo hace excepcional, ya que permite la lectura de cada byte simultáneamente a través de diferentes unidades.



RAID 4Esta matriz set-ups de un bloque a nivel de bandas y dejando a un lado un disco de paridad dedicado). Es similar a RAID 5, excepto que confina todos los datos de paridad para un solo disco, que pueden impactar negativamente en la velocidad de ejecución. No obstante, la detección de errores se logra a través de paridad dedicado que se almacena en una unidad separada, solo disco.



RAID 5Esto se pone en marcha permite la creación de bandas nivel de bits y el cálculo de paridad distribuida. Esto se ha sido el más popular puesta en marcha entre los principios de los montajes mencionados, ya que ofrece los beneficios de la RAID3 y RAID 4, pero sin la experiencia de cuello de botella causado por un cálculo de paridad dedicado en un solo disco.




RAID 6Esta configuración ofrece la creación de bandas a nivel de bits y de doble cálculo de la paridad distribuida. Esto significa también más costoso en los arrays de disco a medida que tendría que hacer doble cantidad disponible de los discos. En general ofrece un rendimiento razonable, pero ligeramente inferior a lo que permite a RAID 5. Se puede hacer muy costoso.




RAID Anidado (híbrido)
También hay matrices que emplean las combinaciones de niveles de RAID estándar fijando tanto en el número estándar de nivel de RAID antes y después de un "+", como por ejemplo 0 +1.

RAID 0 +1: Se refiere a la creación de bandas de datos en conjuntos de espejos. Aunque esto se ha vuelto más compleja para los usuarios normales, esto permite que la tolerancia a fallos y rendimiento mejorado.

RAID 1 +0: Se refiere a la duplicación de datos en un conjunto de bandas.

RAID 5 +1: Se refiere a la puesta a punto con el conjunto de espejos a rayas y con paridad distribuida.



Las descripciones y explicaciones sobre el set-up no son todo el tiempo aplicable a los usuarios de gama baja y puede incluso no ser comprensible para algunos profesionales de la informática de gama alta. Sin embargo, a sabiendas de que hay soluciones posibles de disco a sus necesidades informáticas siempre es una pieza útil de información.Resultados de prueba frente a RAID sola unidad:




Resultados de pruebas RAID frente a una sola unidad:





Traducido de el sitio web: http://www.hirensbootcd.org/what-is-raid/ usando traductor de google: translate.google.com


jueves, 17 de noviembre de 2011

TRADUCIR LAS MATEMÁTICAS EN CÓDIGO CON EJEMPLOS EN JAVA, LA RAQUETA, HASKELL Y PYTHON

Las estructuras matemáticas discretas son la base de la informática.

Estas estructuras son tan universales que la mayoría de los trabajos de investigación en la teoría de la computación, lenguajes de programación y los métodos formales de presentar los conceptos en términos de la matemática discreta en lugar de código.

El supuesto subyacente es que el lector sabe cómo traducir estas estructuras en un fiel cumplimiento de un programa de trabajo.

La falta de material que explica esta traducción frustra los forasteros.

Lo que profundiza la frustración es que cada modelo de lenguaje codifica estructuras discretas de una maneradistinta.

Muchas de las codificaciones son tan inmutables, estructuras de datos puramente funcional (incluso en los lenguajes imperativos), un tema que por desgracia omite muchos currículos de informática. Muchas bibliotecasestándar proporcionan sólo mutable versiones de estas estructuras de datos, lo que lleva inmediatamente a las trampas.

Okasaki clásico de estructuras de datos puramente funcional es una referencia esencial:






ATENCIÓN: MATEMÁTICAS NO TIENE EFECTOS SECUNDARIOS

Los recién llegados error fatal que al traducir las matemáticas en código es mutable utilizando estructuras de datos en la que sólo una estructura inmutable, estaba en lo cierto.

Las matemáticas no tiene efectos secundarios.

Las matemáticas no puede modificar el valor de una variable - ya sea global o local. No se puede mutar un elemento de una matriz. Y, una función matemática devuelve siempre el mismo valor para la misma entrada.

La traducción literal de las matemáticas en el código no puede contener los efectos secundarios.

Las matemáticas son un lenguaje puramente funcional.

Por supuesto, una vez que las limitaciones de una aplicación se entienden, por lo general es posible cambiar las estructuras de datos inmutables mutable de los lugares clave para lograr ahorros de rendimiento.

Sin embargo, a los efectos de creación de prototipos, que siempre es mejor comenzar con una aplicación directa, puramente funcional.

CONJUNTOS Y CONJUNTOS DE PODER

La prestación de un conjunto como el código suele ser un tipo, una colección de respaldo de un árbol de equilibrado o un mapa hash, o un predicado.

En matemáticas, un conjunto es una colección desordenada de elementos.

El conjunto vacío - - es un conjunto especial que no contiene elementos.

La sintaxis de los juegos de llaves es literal: {}. Por ejemplo, el conjunto {1,2,3} es el conjunto que contiene 1, 2 y 3.

La relación x S declara que el valor de x es un miembro del conjunto S.

Establece como tipos

Conjuntos infinitos suelen ser codificados como tipos.

(Por supuesto, algunos conjuntos finitos se codifican como tipo también.)

En algunos casos, un conjunto X se define como un subconjunto de otro conjunto Y:

  
X Y.
Esta relación subconjunto puede ser representada como sucesiones en un lenguaje como Java o Python, si estos juegos están destinados a ser los tipos:

la clase X se extiende Y {... }
Cuando un conjunto X se define como el conjunto potencia de otro conjunto Y:

X = P (Y) = 2Y,
entonces X e Y serán los tipos, y los miembros de X será colecciones.

CONJUNTOS COMO COLECCIONES

Cuando el contenido de un conjunto se calcula en tiempo de ejecución, a continuación, a menudo será una colección ordenada respaldado por una estructura como un árbol rojo-negro.

No es difícil de implementar un árbol de búsqueda puramente funcional, ordenado (pero no balanceada) en Java:

interface Ordered <T> {
  public boolean isLessThan(T that) ;
}

abstract class SortedSet<T extends Ordered<T>> {
  public abstract boolean isEmpty() ;
  public abstract boolean contains(T element) ;
  public abstract SortedSet<T> add(T element) ;

  public static final <E extends Ordered<E>> SortedSet<E> empty() {
    return new EmptySet<E>();
  }
}

final class EmptySet<T extends Ordered<T>> extends SortedSet<T> {
  public boolean isEmpty() {
    return true ;
  }

  public boolean contains(T element) {
    return false ;
  }

  public SortedSet<T> add(T element) {
    return new Node<T>(this,element,this) ;
  }

  public EmptySet() {
  }
}

final class Node<T extends Ordered<T>> extends SortedSet<T> {

  private final SortedSet<T> left ;
  private final T element ;
  private final SortedSet<T> right ;

  public boolean isEmpty() {
    return false ;
  }

  public Node(SortedSet<T> left, T element, SortedSet<T> right) {
    this.left = left ;
    this.right = right ;
    this.element = element ;
  }

  public boolean contains(T needle) {
    if (needle.isLessThan(this.element)) {
      return this.left.contains(needle) ;
    } else if (this.element.isLessThan(needle)) {
      return this.right.contains(needle) ;
    } else {
      return true ;
    }
  }

  public SortedSet<T> add(T newGuy) {
    if (newGuy.isLessThan(this.element)) {
      return new Node<T>(left.add(newGuy),this.element,right) ;
    } else if (this.element.isLessThan(newGuy)) {
      return new Node<T>(left,this.element,right.add(newGuy)) ;
    } else {
      return this ; // Already in set.
    }
  }
}