jueves, 25 de noviembre de 2021

Distribución de productos de la halogenación con Cloro de 2-5-Dimetilhexano


La halogenación con Cloro produce 3 productos, uno en el que el Cloro reacciona con los carbonos primarios (los que están interactuando sólo con otro Carbono); otro en el que reacciona con los carbonos secundarios (los que están interactuando con dos carbonos) y uno más en el que reacciona con los carbonos terciarios (los que están interactuando con tres carbonos).

Molécula de 2-5-Dimetil-Hexano

Molécula de Cloro

Productos de la halogenación con Cloro del 2,5 Dimetil Hexano.

1-Cloro 2,5 Dimetil Hexano
2-Cloro 2,5 Dimetil Hexano
3-Cloro 2,5 Dimetil Hexano

Por la simetría de la molécula solo son posibles tres combinaciones, ya que las posiciones 4,5,6 son equivalentes.
Se sabe que la reactividad del Cloro es (1:4:5), para los carbonos primarios, secundarios y terciarios respectivamente. Dado que la energía necesaria para sustituir un hidrógeno primario es mayor que la necesaria para  sustituir uno secundario o uno terciario, el número de productos de la halogenación, no es lineal, si no que tiene que calcularse tomando en consideración esta facilidad de sustitución.
Sabiendo lo anterior, lo que debemos hacer para calcular las cantidades de productos resultantes es identificar la cantidad de hidrógenos de cada tipo de carbono presentes, para el presente ejemplo, esas cantidades son:
  • 12 hidrógenos primarios.
  • 4 hidrógenos secundarios.
  • 2 hidrógenos terciarios 
Tipos de hidrógenos presentes en la molécula según los carbonos.
Con base en las cantidades presentes de hidrógeno en la molécula podemos saber la cantidad de cada combinación que resultaran finalmente, mediante el uso de la siguiente fórmula:

nHp * Rp + nHs * Rs  + nHt * Rt = 100%

donde:

nHp = número de hidrógenos primarios.
nHs = número de hidrógenos secundarios.
nHt = número de hidrógenos terciarios.
Rp = Reactividad primaria.
Rs = Reactividad secundaria.
Rt = Reactividad terciaria.

Sustituyendo los valores propios y conocidos en la ecuación tenemos:

12 * 1  + 4 * 4 + 2 * 5= 100%

desarrollando:

12 + 16 + 10 = 38

es decir:

38 equivale al 100% de los productos, por lo que debemos obtener la fracción correspondiente de cada producto, dividiendo entre 38 cada uno de los resultados, obteniendo la siguiente equivalencia, para cada producto:

12/38(x1)+16/38(x2)+10/38(x3)=100%

x1 = Fracción de hidrógenos primarios.
x2 = Fracción de hidrógenos secundarios.
x3 = Fracción de hidrógenos terciarios.

Sustituyendo y redondeando los valores en la cada uno de los términos por separado obtenemos los valores para cada una de las "x", estos valores los convertimos a porcentajes:

x1 = 12/38 = 0.315789 = 32%
x2 = 16/38 = 0.421052 = 42%
x3 = 10/38 = 0.263157 = 26%

Y ya podemos proceder a calcular la cantidad de productos a obtener desarrollando la ecuación completa, con los valores ya conocidos:

nHp * Rp * x1 + nHs * Rs *x2  + nHt * Rt * x3 = 100%

donde:

nHp = número de hidrógenos primarios.
nHs = número de hidrógenos secundarios.
nHt = número de hidrógenos terciarios.
Rp = Reactividad primaria.
Rs = Reactividad secundaria.
Rt = Reactividad terciaria.
x1 = Fracción de hidrógenos primarios.
x2 = Fracción de hidrógenos secundarios.
x3 = Fracción de hidrógenos terciarios.

12 * 1 * 0.32 + 4 * 4 * 0.42 + 2 * 5 * 0.26 = 100%

Es decir:

3.84 + 6.72 + 2.6 = 13.16

El número elevado resultante de esta ecuación nos indica que la reacción de halogenación de 2,5 dimetil hexano con cloro es poco selectiva, entre menor sea el número resultante mayor será la selectividad. 

Bibliografía

Germán Fernández (2011), Nomenclatura en Química Orgánica , Academia Minas, España.

Germán Fernández (2016), Química Orgánica, Academia Minas, España.

lunes, 1 de noviembre de 2021

El almacenamiento en la nube una realidad innegable, ¿una vida alterna en la nube es una posibilidad real?

 En 13 de julio de 2013 escribí una entrada titulada "Almacenamiento en la nube ¿una realidad que aceptaremos?" hoy a poco más de 8 años de escribir esa entrada, el almacenamiento en la nube es algo que las personas aceptan de forma natural y muchas veces insconsciente al darse de alta en redes social, es y diversos servicios que funcionan en linea, muchas veces ni siquiera cuestionan donde se encuentran sus datos, ni les preocupa queines puedan acceder a ellos, confian la seguridad de sus datos en las empresas que los manejan a discresión, ¿como paso esto?, que lo motivo si hace apenas unas décadas todos luchaban por mantener sus datos ocultos en su computadora personal protegidos por contraseñas y muchas veces encriptados; la respuesta: comodidad, para gozar de todos los beneficios de la tecnología el usaurio debe renunciar a su privacidad y a sus datos, estar todo el tiempo conectado y compartir su ubicación con quienes le proveen de servicios en su mayor parte lúdicos, juegos, citas, información turística, acceso a sus cuentas bancarias, compra de bienes y servicios, en fin, tantas cosas que es dificil enumerar, hasta el super se puede hacer sin preocuparse del lugar donde uno está.

¿Vale la pena?, la respuesta es que sí, sin esta concesión tácita del acceso a nuestros datos probablemente hoy muchas cosas no serían posibles y muchos negocios millonarios jamás podrían realizarse, si bien, es cierto que esta cesión de datos también es campo fértil para la comisión de delitos, el usuario de estos servicios es en todo momento responsable de la información que se permite poner en las aplicaciones que utiliza, y es posible, en un momento dado limitar lo que las empresas tecnológicas obtienen de parte nuestra a cambio de sus útiles servicios.

Hasta donde estamos dispuestos a llegar, no lo se con claridad, actualmente las empresas de tecnología parecieran querer vendernos una vida virtual que supla las frustraciones de la vida real y la cada vez mayor pobreza de la población mediante vidas alternas en el ciber espacio, donde se crearan comunidades que nos permitiran olvidarnos de nuestras carencias a cambio de pagar una renta en la nube, nube que ahora no solo será de datos, sino de todo una enorme cantidad de opciones de vida virtual y obviamente no solo habrá personas, habrá inteligencias artificiales y robots que permitiran al usuario humano vivir fantasias de todo tipo y liberar sus frustraciones reales, la pregunta en el aíre es ¿qué tanto nos desconectaremos del mundo con algo así?.

¿Cómo afectará las relaciones humanas este cambio? ¿podrán ahora las empresas ser dueñas hasta de nuestros actos más intimos en la vida virtual, llenará esta vida virtual las necesidades y deseos de los que menos tienen desconectandolos por completo de la realidad y haciendolos dueños de una absoluta felicidad virtual. Pronto lo sabremos una vez que las empresas de redes sociales comiencen a fabricar sus mundos virtuales con toda clase de servicios y ¿porque no? con toda clase de prendas sensoriales que nos hagan desonectarnos totalmente de la realidad y desear nunca volver a ella.

¿La realidad superando a la ficción? Esperemos vivir para verlo. Algo similar a lo que vemos en la película Ready Player One de la Warner Bros

En ustedes queda la última palabra, ¿les interesa ser parte de esta vida virtual? o se negaran a ella hasta que simplemente ya no puedan.


viernes, 9 de julio de 2021

¿Qué es un lenguaje de programación?

Un lenguaje de programación, consiste en todos los símbolos, caracteres y reglas de uso que permiten a las personas comunicarse con las computadoras. Existen varios cientos de lenguajes y dialectos de programación diferentes. Algunos se crean para una aplicación específica, otros tienen un carácter general. En cualquier caso los lenguajes de programación tienen instrucciones clasificadas por categorías como: Entrada/Salida, Cálculo/Manipulación, Lógica/Comparación, Almacenamiento/Recuperación.

Aunque todos los lenguajes de programación permiten hacer casi las mismas cosas, existen muchas diferencias en los conjuntos de instrucciones que permiten realizar dichas operaciones y en los símbolos definidos para llevar a cabo cada tarea. Existen tres tipos principales de lenguajes de programación: Lenguaje de bajo nivel, lenguaje de medio nivel y lenguajes de alto nivel.

Lenguaje de programación Python
Fuente: Elaboración propia.

La programación consiste en desarrollar programas (software) para procesar información, una computadora es totalmente inútil si no dispone de programas capaces de procesar adecuadamente la información, para que dicha información sea procesada, es necesario pensar, construir y crear un programa  que al ejecutarse complete las tareas para las que fue diseñado. Esta tarea de programar no está exenta de errores, y es allí donde se requiere de personas capacitadas para pensar utilizando la lógica de programación implementada por el lenguaje de programación que se está utilizando, realmente sería imposible dominar todos los lenguajes de programación que existen en el mercado, es por ello que los programadores expertos eligen de entre cientos, uno o algunos que sirvan a los propósitos de sus tareas específicas ya que entre mayor sea su nivel de dominio de los lenguajes seleccionados, más fácil será completar las tareas que le sean asignadas.

Un objetivo fundamental de la programación es que los programas se codifique de modo tal que si un programador inicia el desarrollo de un programa y por algún motivo lo abandona, cualquier otro programador sea capaz de continuar con el trabajo y finalizarlo, por desgracia, no todos los que aprenden a programar siguen las recomendaciones de diseño y codificación, y existe infinidad de programas que son difíciles de mantener funcionando debido principalmente a la falta de método en su diseño.

Existen dos tipos de lenguajes de programación, los lenguajes interpretados y los lenguajes compilados, la diferencia principal radica en que los programas interpretados pueden ejecutarse en diferentes entornos con pocas modificaciones pero generalmente se ejecutan más lento, y los programas compilados son específicos de las plataformas en las que fueron diseñados, en un principio todos los lenguajes solían ser compilados, ya que no existía tanta necesidad de compartir datos fuera de instalaciones específicas; pero hoy día con el ambiente interconectado de trabajo que nos permite disfrutar Internet, la mayor parte de las aplicaciones son interpretadas y pueden ejecutarse independientemente del ambiente de trabajo en el que deseemos visualizarla, como ejemplo están los contenidos manejados por  las aplicaciones de los teléfonos móviles que acceden a datos almacenados en la nube y que pueden ser visualizados en dispositivos muy distintos como son la tableta, el celular, la computadora de escritorio y las televisiones inteligentes.

Criterios de selección de lenguajes de programación.

Dado que existen muchos lenguajes de programación y muchas diferencias entre la orientación de los mismos, es recomendable seguir algunos consejos antes de seleccionar aquel que deseamos aprender.

  • Utilidad. Fácil de aprender.
  • Rendimiento. Velocidad de ejecución de los programas creados.
  • Portabilidad y flexibilidad. Posibilidad de crear aplicaciones que se ejecuten en distintos entornos operativos.
  • Continuidad. Que tenga el respaldo de una amplia comunidad de programadores que permita asegurar que estará disponible mucho tiempo y que será actualizado periódicamente.

Clasificación de los Lenguajes.

Lenguaje de bajo nivel.

Este tipo de lenguaje son específicos de la máquina en la que se encuentran, generalmente son los más eficientes para realizar las tareas en el equipo, pero nos obligan a la dependencia absoluta de la plataforma en la que programamos. Generalmente no son muy amigables con el programador y obligan al mismo a tener un amplio conocimiento del hardware.

Lenguaje de medio nivel.

Este tipo de lenguajes son más amigables con el usuario pero permite al mismo seguir teniendo un amplio dominio de la plataforma en la que programa, aunque no es tan fácil migrar al 100 por ciento, un programa a cualquier otro equipo sin modificar partes del código.

Lenguaje de alto nivel.

Este tipo de lenguajes son muy amigables con el programador y le permiten moverse de forma casi transparente entre diferentes plataformas, el programador gana en portabilidad, pero pierde en cuanto a dominio del equipo ya que muchas cosas que en otros lenguajes podía gestionar de forma directa, en este tipo de lenguajes quedan ocultos a su dominio y por lo general los programas creados en este tipo de lenguajes tienen un menor desempeño.

Ejemplos de lenguajes de programación. 

Lenguaje C, C++, C#

Estos lenguajes de programación derivan uno del otro pero, tienen diferencias muy claras.

Lenguaje C

Fue creado por Dennis Ritchie a principios de 1970, se basa en el paradigma de la programación estructurada. Pretende ser un lenguaje de propósito general que dé al programador control total sobre sus programas, permitiendo la programación a bajo nivel, pero a la vez, proporcionando estructuras de control de alto nivel que faciliten las tareas de programación. Se usó por primera vez en sistemas UNIX, en 1978 alcanzó gran popularidad y se convirtió en el lenguaje de referencia para la comunidad informática.

Lenguaje C++

Creado por Bjarne Stroustrup durante la primera mitad de los años 1980 con el fin de dotar a C de mecanismos que le permitieran usar el paradigma de la programación orientada a objetos. Su nombre original era C con clases, pero finalmente se decidió hacer un juego entre el nombre del lenguaje y uno de sus operadores más comunes (autoincremento ++) quedando su nombre como C++; inicialmente era totalmente compatible con C, es decir cualquier programa escrito en C se ejecutaba en C++, aunque lo contrario no siempre era cierto. Actualmente esa compatibilidad es menor, pero aún es significativa.

Lenguaje C#

Creado por Anders Hejlsberg en el año 2000 como una versión mejorada de C++ (C++++) C#; su objetivo es permitir la programación a alto nivel, la idea es que las capacidades de bajo nivel de C y C++ rara vez son utilizadas por los programadores, para los que el riesgo de manipular directamente la memoria y otros recursos es algo innecesario y peligroso; nace como un intento de Microsoft por hacer frente a la popularidad de Java, lenguaje que había arrebatado gran cantidad de adeptos a C y C++, debido a su facilidad de uso; además, se decidió hacerlo el lenguaje nativo de la plataforma .Net de Microsoft (Windows), originalmente C# estaba fuertemente basado en C++, pero con el paso del tiempo se ha ido separando y aún cuando mantiene compatibilidad, ya no es completa. C# es uno de los lenguajes más populares para programar aplicaciones para Windows.

BASIC (Beginners' All-purpose Symbolic Instruction Code)

El lenguaje BASIC surge con la finalidad de hacer fácil la programación para los principiantes, su nombre es un acrónimo en inglés de “código simbólico de instrucciones de propósito general para principiantes”, fue originalmente diseñado en 1964 por John Kemeny y Thomas Eugene Kurtz para estudiantes y profesores no científicos, de este lenguaje  han derivado cientos de versiones en todas las plataformas existentes, muchos nuevos lenguajes de programación, ya no directamente relacionados con BASIC, toman su modelo como  Gambas en GNU/Linux o Microsoft Visual Basic .NET en Windows.

Una de las desventajas más notables de BASIC era no manejar el acceso directo a archivos, sino depender de una aplicación externa para acceder a ellos.

Los ocho principios de BASIC:

  • Facilidad de uso.
  • Propósito general.
  • Capacidad de añadir características avanzadas, sin complicar el lenguaje.
  • Ser interactivo.
  • Proveer mensajes de error claros y amigables.
  • Desempeño.
  • No requerir conocimientos del hardware donde se ejecuta.
  • Proteger al usuario del sistema operativo.

Visual Basic

Con la llegada de Microsoft Visual Basic que usaba todas las sentencias, forma de manejo y tipos de datos de Basic, pero con mayor potencia, Visual Basic se convirtió en uno de los lenguajes más utilizados para desarrollar soluciones en la plataforma Windows para el año 2002 se estimaba que cerca del 70% de los programas desarrollados para Windows se programaba en Visual Basic; en 2002, y con la introducción de la plataforma .NET, Visual Basic se orienta a Objetos y se convierte en multiplataforma. Hoy día es parte de la suite de programación conocida como Visual Studio, y comparte muchas instrucciones comunes con otros lenguajes basados en .NET, más que conservar las estructuras del Basic original.

Java

El lenguaje para la programación en Java, es un lenguaje orientado a objeto, de una plataforma independiente, fue desarrollado por la compañía Sun Microsystems en 1995, con la idea original de usarlo para la creación de paginas WEB. Java permite crear complementos tipo Apps que se ejecutan en un navegador o bien aplicaciones independientes más complejas como procesadores de textos, o juegos.

La programación JAVA permite crear aplicaciones orientadas a una arquitectura cliente/servidor, lo que hace capaz a un programa de ejecutarse en múltiples ordenadores simultáneamente, ejecutando un mismo proceso, es decir distribuyendo el trabajo.

JavaScript

Lenguaje de programación interpretado del lado cliente (principalmente), está orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico. Se utiliza principalmente como parte de los navegadores (lado cliente) para dotar de funcionalidad a la páginas Web y permitir que sean dinámicas. Fue creado en 1995 por Netscape Communications Corp (Mozilla Foundation).

Todos los navegadores modernos interpretan el código JavaScript integrado en las páginas Web. Para interactuar con una página Web se provee JavaScript bajo el Modelo de Objetos Documento. Actualmente JavaScript se usa para interactuar con los servidores de Internet en conjunto con otras tecnologías del lado servidor como Ajax.

Python

Es un lenguaje de programación interpretado cuya filosofía es un código legible. Se trata de un lenguaje multiparadigma, soporta programación imperativa y orientada a objetos, así como en menor medida programación funcional. Es un lenguaje de tipado dinámico y multiplataforma. Posee licencia de código abierto.

Fue creado en 1991, por Guido van Rossum, su nombre proviene de la adicción de su creador por los humorista británicos Monty Python.

Filosofía de Python

  • Bello es mejor que feo.
  • Explícito es mejor que implícito.
  • Simple es mejor que complejo.
  • Complejo es mejor que complicado.
  • Plano es mejor que anidado.
  • Disperso es mejor que denso.
  • La legibilidad cuenta.
  • Los casos especiales no son tan especiales como para quebrantar las reglas.
  • Lo práctico gana a lo puro.
  • Los errores nunca deberían dejarse pasar silenciosamente.
  • A menos que hayan sido silenciados explícitamente.
  • Frente a la ambigüedad, rechaza la tentación de adivinar.
  • Debería haber una - y preferiblemente sólo una - manera obvia de hacerlo.
  • Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés.
  • Ahora es mejor que nunca.
  • Aunque nunca es a menudo mejor que ya mismo.
  • Si la implementación es difícil de explicar, es una mala idea.
  • Si la implementación es fácil de explicar, puede que sea una buena idea.
  • Los espacios de nombres (namespaces) son una gran idea ¡Hagamos más de esas cosas!.

Bibliografía.

Fundamentos de la computación, (N/D), Instituto Politécnico Nacional, Unidad profesional de ingeniería y ciencias sociales y administrativas.