SG #58 https://sg.com.mx/ en Estudio de Salarios SG 2019 https://sg.com.mx/revista/58/estudio-de-salarios-sg-2019 <span class="field field--name-title field--type-string field--label-hidden">Estudio de Salarios SG 2019</span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-01/salarios%201.png" width="2657" height="2243" alt="" loading="lazy" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/15119" lang="" about="/user/15119" typeof="schema:Person" property="schema:name" datatype="" class="username">pedrogk</a></span> <span class="field field--name-created field--type-created field--label-hidden">Wed, 02/06/2019 - 17:05</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/58" hreflang="zxx">SG #58</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/buzz/autores/pedro-galvan" hreflang="und">Pedro Galván</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p><meta charset="utf-8" />Te presentamos los resultados de la undécima edición del Estudio de Salarios SG.</p> <h3 dir="ltr">Agradecimientos</h3> <p dir="ltr"> </p> <p><a href="https://www.itexico.com/"><img alt="iTexico" data-entity-type="file" data-entity-uuid="63d882b3-1ba0-4296-840d-3c6c742a85e6" src="/sites/default/files/inline-images/ITX_logo_2018-Slogan.png" width="343" height="86" loading="lazy" /></a></p> <p dir="ltr">Antes de continuar, agradecemos a la empresa <a href="https://www.itexico.com/">iTexico</a>, que a través de su patrocinio hizo posible el presente estudio. De acuerdo con Guillermo Ortega, cofundador y director de operaciones de iTexico, “el estudio de salarios de Software Guru muestra la competitividad de iTexico en el mercado laboral, no sólo por los niveles de salario y prestaciones que ofrecemos sino también por el papel principal que juega la diversidad y la equidad en nuestro equipo humano.”</p> <p dir="ltr">Adicionalmente agradecemos el apoyo de los siguientes organismos que participaron en la difusión de la encuesta: <a href="https://amiti.org.mx/">AMITI</a>, <a href="http://www.canieti.org">CANIETI</a>, <a href="http://www.csoftmty.org/">CSOFTMTY</a> y <a href="http://www.prosoftware.org.mx">PROSOFTWARE</a>.</p> <h3 dir="ltr">Fuente de los datos y contexto</h3> <p dir="ltr">Las cifras y estadísticas mostradas en este reportaje se generaron con base en los datos obtenidos durante una encuesta realizada en noviembre de 2018 por medio de una encuesta abierta en internet. Después de limpiar los datos, quedamos con 2,215 respuestas válidas, de las cuales 2,075 son de personas que indicaron residir en México. Por default, las estadísticas mostradas en este reporte se basan en este subconjunto de 2,075 datos.</p> <p dir="ltr">Todos los datos se refieren a salario bruto mensual, expresado en pesos mexicanos. En la mayoría de las tablas mostramos los siguientes datos: mediana, media (promedio), desviación estándar y tamaño de la muestra. Toma esto en cuenta para las conclusiones que generes.</p> <h3 dir="ltr">Salario medio</h3> <p>De acuerdo a los datos recopilados este año, el salario medio de un profesionista de software en México es de $33,000 pesos brutos mensuales. Ese dato se refiere a la mediana, que consideramos que es el valor que tiene más sentido en este tipo de casos.</p> <p><meta charset="utf-8" /></p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-07e9df29-7fff-60d7-6506-e06c9fd30fad"><img height="51" src="https://lh3.googleusercontent.com/OeXQTGp50dpvFqyPNVdcmXni7Ybqa0FM-3H6262bmwXsSPIkLTw7ASrWBeWEp1nKJsuRcA4JK_RvC8PiCVn5tfSkTDuvamx_OhIJ5dvTJA1kZKN0WCme26oPMPCQVIQnzMm5z_In" width="624" /></b></p> <p class="text-align-center" dir="ltr"><em>Tabla 1. Estadísticas descriptivas del salario en México</em></p> <p dir="ltr">La tabla 1 muestra el resumen de estadísticas descriptivas para el salario. Como podemos ver, el 50% de los profesionistas de software en México tienen un sueldo bruto mensual entre 20 mil y 50 mil pesos al mes. La desviación estándar (más de 26 mil pesos) es alta, lo cual es de esperarse ya que este es un primer acercamiento sin tomar en cuenta variables que nos puedan ayudar a aumentar la precisión, tales como experiencia, habilidades y ubicación geográfica; haremos esto más adelante.</p> <p dir="ltr">Respecto al año anterior, el salario medio creció apenas de 32 a 33 mil pesos, es decir un 3.1%, y el primer quartil se mantuvo en la misma cifra (20 mil pesos). Así que en términos reales (al considerar la inflación), el salario promedio de nuestra profesión bajó en este año. ¿Cómo puede ser eso, si hay tanta demanda? Bueno, al analizar los números con mayor profundidad, notamos que tenemos una proporción mayor que hace un año de personas con menos de 5 años de experiencia. Al parecer, lo que está sucediendo es que ante la gran demanda de talento, estamos teniendo una mayor proporción de desarrolladores “novatos” que por lo tanto están en los escalafones de compensación más bajos.</p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-07e9df29-7fff-60d7-6506-e06c9fd30fad"><img height="296" src="https://lh4.googleusercontent.com/wwAbjUrQybHpf2HdnL24CI-yoQILkOz0OgW-dIti3mywTF_drHiiQOKeQxwI5J5O-lmtu1fAWQpERuYIsPgi0NBh4nQoXMKzcWx_eI0rqC1gePfQcnm-s-4Set9gb0cpnx7lmiZU" width="624" /></b></p> <p class="text-align-center" dir="ltr"><em>Figura 1. Histograma de frecuencias, salario mensual bruto (miles de pesos)</em></p> <p dir="ltr">La figura 1 muestra un histograma de frecuencia de los salarios, con una curva de densidad. Como podemos ver, la curva tiene dos jorobas, destacando un grupo con salario medio de 20 mil pesos y otro con salario medio de alrededor de 36 mil pesos. Como veremos más adelante, la pertenencia a alguno de estos grupos depende principalmente de la experiencia y nivel de inglés.</p> <p><meta charset="utf-8" /></p> <h3 dir="ltr">Actividades y roles</h3> <p dir="ltr">La tabla 2 muestra algunos de los principales roles a los que se dedican los profesionistas de software, y los salarios asociados a cada uno. Los participantes en la encuesta podían elegir hasta 3 roles que realizan, es por ello que la suma de los porcentajes es mayor a 100%.</p> <p dir="ltr">Como de costumbre, los roles de preventa, venta y dirección perciben los salarios más altos, seguidos por los roles de consultoría y arquitectura. Hace un año ya habíamos notado que el rol de sysadmin estaba aumentando su valor, posiblemente como consecuencia del movimiento DevOps y el énfasis en Site Reliability Engineering, y esto ha continuado, posicionando a un sysadmin con un salario mayor que el de un project manager, lo cual hubiera sido inaudito hace unos años. Otro factor a considerar es la diferencia de salarios entre DBAs y Data Engineers. El DBA es un rol de IT tradicional, enfocado en administrar y cuidar los datos, mientras que el data engineer está orientado a habilitar nuevos negocios.</p> <p class="text-align-center" dir="ltr"><meta charset="utf-8" /><b id="docs-internal-guid-503fe9d4-7fff-ab04-8e0d-14ef703f7d67"><img height="551" src="https://lh4.googleusercontent.com/y8Dq2POntHRdyFDffgr_5gomu_f9vTkdNDEyUy8WTfF9AcqrvAYlJMoNZ_MylPAlwNdmjvGYTW2WF1FyAH2t65cYi-wzwhl9ed2-VR4pUAyTGc9cJnUmBevCYmyOMZzbmQpxEo7x" width="496" /></b><meta charset="utf-8" /></p> <p class="text-align-center" dir="ltr"><em>Tabla 2. Salario por rol</em></p> <h3 dir="ltr">Experiencia</h3> <p dir="ltr">La figura 2 muestra una gráfica donde se aprecia el salario medio de acuerdo a los años de experiencia, el tamaño de la burbuja indica el tamaño de la muestra para cada punto. Como podemos apreciar, el salario percibido tiene una relación importante con la experiencia. Durante los primeros 7 años, la relación es prácticamente lineal, con un crecimiento aproximado de 5 mil pesos por año de experiencia. A partir del octavo año de experiencia el salario se estabiliza alrededor de los 40 mil pesos.</p> <p class="text-align-center" dir="ltr"><meta charset="utf-8" /><b id="docs-internal-guid-bde38834-7fff-2731-b22a-39fbe638fa81"><img height="368" src="https://lh3.googleusercontent.com/7-RvPg31EF-v6m0HX7OAb8qsF91ENKQC2WQFnNcpCvpW0VJ3Au7cmzueKfSxa0qZMKIhyBNSLiYs7qIpx5nnnKBKmf3HoHOhDisoQBLTx9jYQQgS7YPd4FpMrT2K5x2_j1ndl6B5" width="572" /></b><meta charset="utf-8" /></p> <p class="text-align-center" dir="ltr"><em>Figura 2. Salario de acuerdo a años de experiencia</em></p> <h3 dir="ltr">Ubicación geográfica</h3> <p dir="ltr">La tabla 3 muestra el salario medio de acuerdo a la ciudad donde radica la persona. Solamente hemos incluido ciudades de donde obtuvimos al menos 10 observaciones.</p> <p class="text-align-center" dir="ltr"><meta charset="utf-8" /><b id="docs-internal-guid-aab9e2bd-7fff-a6e8-6e96-6fd26fdf9496"><img height="787" src="https://lh5.googleusercontent.com/QZ2vky8h8T6KADAMVAF7GvvH_yvoKSxD7lqBUH9o7o6AyvCplr6UOqYhZ_wZb2OKBvI6A6p7hrWhcnADQ5aPz7lcv_2MfHNTeM4PwATRXCwfoyCOOoQ9wHtiwDTSaVpW4Uo8D43T" width="508" /></b></p> <p class="text-align-center" dir="ltr"><em>Tabla 3. Salario por ciudad</em></p> <p dir="ltr"><meta charset="utf-8" /></p> <p dir="ltr">Aparecen a la cabeza ciudades del norte del país como Tijuana, Chihuahua y Hermosillo. La muestra de participantes en estas ciudades es relativamente pequeña y muy probablemente se concentre en unas pocas empresas, pero aún así vale la pena notar este fenómeno, ya que el grueso del desarrollo de software que se hace en estas ciudades es bajo esquema nearshore para clientes norteamericanos, y el tipo de cambio monetario les permite pagar salarios por encima del resto del país. Similar es el caso de Colima, que ya hemos comentado anteriormente.</p> <p dir="ltr"><meta charset="utf-8" /></p> <p dir="ltr">Fuera de esto, lo que encontramos es una continuación de lo que hemos visto en años anteriores: entre las ciudades grandes, Guadalajara se mantiene con los mejores sueldos, por delante de Monterrey y Ciudad de México. Querétaro es otra ciudad con gran actividad pero ofrece salarios significativamente menores que las ciudades previamente mencionadas, en gran parte porque el grueso de la actividad en esta ciudad es en centros de desarrollo para grandes corporativos que tienen grandes volúmenes de trabajo pero pagan tarifas mucho menores que los clientes nearshore.</p> <p dir="ltr">La tabla 4 muestra un comparativo de salarios entre distintos países. Descartamos aquellos países de donde se obtuvieron menos de 5 respuestas. Aunque la muestra en países distintos a México es demasiado pequeña como para poder generar información confiable, sí se nota claramente la brecha salarial entre Estados Unidos y Latinoamérica.</p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-1adb53aa-7fff-33e1-af23-46913eb5a731"><img height="179" src="https://lh6.googleusercontent.com/o87pOhXjIYKS-BRqSDIiv589ETbq_QuNxYgpTYX0qLGHRF_MwBeWzwTJxcleZ7ocU5I_1AJA3IeuvnsY3oe-P7RR7UeTRT-PnZ_Yq-q29dCxM5Xwi-3sFiRDftm5haCwbFPY4Sar" width="507" /></b></p> <p class="text-align-center" dir="ltr"><em>Tabla 4. Salario por país</em></p> <h3 dir="ltr">Estudios</h3> <p dir="ltr">La tabla 5 muestra el desglose de salario de acuerdo al máximo nivel de estudios terminado.</p> <p class="text-align-center" dir="ltr"><meta charset="utf-8" /><b id="docs-internal-guid-dd06ce38-7fff-e4c4-4d46-995d18689281"><img height="210" src="https://lh3.googleusercontent.com/A9EgNulqqHEmw-MGBzgYKbSg0Vm3sXM2IOXarnIvY7fuH_SsRSpr1F2KoOmdAyO2nfALc9v_bMWIOVYEIIg7zIetllqTisAku8dHVTfvapzkfP2NzKqXqRTSqOl2P4_-jTiXCJwK" width="507" /></b></p> <p class="text-align-center" dir="ltr"><meta charset="utf-8" /><em>Tabla 5. Salario por nivel de estudios</em></p> <p dir="ltr"><meta charset="utf-8" /></p> <p dir="ltr">Lo primero que llama la atención es que el salario medio de personas cuyo máximo nivel de estudios es de preparatoria o vocacional sea mayor que el de graduados universitarios. Habrá quienes quieran ver esto como una señal de que no sirve ir a la universidad, pero hay que tomar este dato con precaución. Por un lado, la diferencia es pequeña y depende de si nos basamos en la mediana o la media para ver cual queda arriba. Por otro lado, todos conocemos casos como estos, de personas que son muy buenas técnicamente desde jóvenes y comienzan a trabajar desde que salen de la preparatoria y ya no completan sus estudios universitarios. Estas personas típicamente ganan bien porque están acostumbrados a aprender por su cuenta, y esa es una capacidad bastante útil independientemente de si fuiste a la universidad o no.</p> <p dir="ltr">Para ahondar más en este punto, este año agregamos a la encuesta una pregunta para conocer donde aprendieron las personas a desarrollar software, si fue por su parte, en la universidad o de otra manera como en cursos en línea o en un bootcamp / hacker school. Los resultados se pueden ver en la tabla 6.</p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-4e2c4206-7fff-5b2d-5f6a-cf743668442a"><img height="146" src="https://lh3.googleusercontent.com/8jVCXM7saWbJnngycs4CHLiu_Ru3JZJIR-wbkLKG_cD3I_3nc2HUtdegonQNJRcJygMBMApFvqrnjMbpigSwHq8m2mWKUkvllal8SI6H4vhjcw5OHWmsCzuCrscWrTQaxAyG9twe" width="507" /></b></p> <p class="text-align-center" dir="ltr"><em>Tabla 6a. Salario por tipo de formación (sin considerar experiencia)</em></p> <p dir="ltr"><meta charset="utf-8" /></p> <p dir="ltr">En principio, podemos ver que las personas que se consideran autodidactas tienen un salario significativamente mayor que el resto. Aunque esto se podría interpretar en principio como “no tiene caso ir a la universidad”, al revisar este grupo de autodidactas encontramos que el 84% tiene estudios universitarios e incluso el 20% tiene estudios de posgrado. Entonces, no es que “no tenga caso ir a la universidad”, sino que no puedes depender solamente de lo que aprendas en la universidad, los buenos desarrolladores aprenden de forma continua el resto de su carrera.</p> <p dir="ltr">Otro aspecto interesante a revisar sobre esta información es qué tanto varía la compensación entre quienes aprendieron a construir software en la escuela tradicional y aquellos que aprendieron mediante cursos en línea y bootcamps. Un primer vistazo nos diría que hay una diferencia significativa, dado que el salario medio de quienes aprendieron con cursos en línea es alrededor de 30% menor que el de quienes aprendieron en la universidad (y la diferencia respecto a hacker schools es todavía mayor). Sin embargo, este análisis no es confiable ya que la variable que más efecto tiene en el salario de profesionistas de software es la experiencia, y los cursos en línea son algo que apenas se ha popularizado en los últimos años, por lo que las personas que aprendieron de esta forma en general tienen menos experiencia que los que aprendieron de forma tradicional.</p> <p dir="ltr">Así que hicimos un segundo corte, tomando en cuenta solamente a las personas con 5 años o menos de experiencia (ver tabla 6b).</p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-494bb148-7fff-d269-258e-ed94d79a1383"><img height="146" src="https://lh6.googleusercontent.com/esH0Ihb1axTvNeb15JZQfVYLxT-5ImDtUyhGPWrH_HCaMu4EPLedXgfFBvZF2ugmLkv0-cV2jlSAH5fHZDKJ4wUHFfN4jPFEgDsmd8rLmKvQDktwbWptM0suMxereUs9MOY8dvq6" width="507" /></b></p> <p class="text-align-center" dir="ltr"><em>Tabla 6b. Salario por tipo de formación considerando experiencia</em></p> <p dir="ltr">Básicamente, al agrupar en el mismo rango de experiencia la diferencia de compensación entre escuela tradicional y cursos en línea se elimina. Esto es un hallazgo muy importante.</p> <p dir="ltr">A continuación combinamos otra variable relevante, que es el nivel de inglés. Hicimos un recorte adicional considerando solamente a las personas que tienen un nivel de inglés de 3 o mayor según la escala ILR. Este nivel es el recomendado para poder desempeñarse profesionalmente.</p> <p class="text-align-center" dir="ltr"><meta charset="utf-8" /><b id="docs-internal-guid-6ac6395a-7fff-9237-126c-cb7a97ab2c03"><img height="146" src="https://lh5.googleusercontent.com/TSq0-aSyVU744uwkE1uyFOT9WIeuwIcyMLpr-1E6H03AsTd23OtWkBwfXYrmMY9qpAMGDnRgp5kNKD0qQH10YCUkdbo6MxhTqxbrR69ntWF5ogUBZolkU2kV-224hmMmqNa1UYlD" width="507" /></b><meta charset="utf-8" /></p> <p class="text-align-center" dir="ltr"><em>Tabla 6c. Salario por tipo de formación considerando experiencia e inglés</em></p> <p dir="ltr">Estos resultados nos hacen ver que el salario al que aspira un desarrollador de software no es afectado por donde haya aprendido a desarrollar. Existen otras variables que sí afectan el salario, como la experiencia o el nivel de inglés, pero dónde aprendiste a desarrollar no es una de ellas.</p> <p dir="ltr"> </p> <p dir="ltr"><meta charset="utf-8" /></p> <p dir="ltr">En el caso específico de las hacker schools, pareciera que son la opción menos atractiva en términos de compensación. Sin embargo, son algo que apenas tiene poco tiempo en nuestra región, por lo que la muestra es pequeña y en su mayoría son personas con poca experiencia construyendo software. Continuaremos monitoreando esta variable en el futuro para observar su comportamiento.</p> <h3 dir="ltr">Tipo de empresa y esquema</h3> <p dir="ltr">La tabla 7 muestra la descomposición de los participantes de acuerdo al tipo de organización en la que laboran.</p> <p dir="ltr">El comportamiento es muy similar al de los últimos años. Los salarios más altos son los de startups y los más bajos los de instituciones educativas, mientras que donde hay más empleo es en empresas proveedoras de servicios TI (ej. outsourcing) y posteriormente en empresas cuyo giro no es TI (ej. corporativos). Respecto a años anteriores, el salario en empresas proveedores e ISVs se mantuvo prácticamente igual mientras que en los corporativos aumentó ligeramente, posiblemente como consecuencia de iniciativas de transformación digital que están requiriendo contar con una mayor cantidad de talento técnico “in-house”. Nos mantendremos al pendiente de cómo evoluciona este comportamiento.</p> <p class="text-align-center" dir="ltr"><meta charset="utf-8" /><b id="docs-internal-guid-250f8889-7fff-4aec-9e10-6387a6d13736"><img height="199" src="https://lh5.googleusercontent.com/IaxB6d4wZghhQKsisa5EaNoWayVHFzjnDZU6h2lVyt7YEBTdVE0gYBulWIlZV-5ZQqe6_DQoT1R3Y9Hys7HgOQr302k5lK2VuE8JrYzud-MG6Xu73TpLbaHUURF8WVQ_oNFrRwPe" width="504" /></b><meta charset="utf-8" /></p> <p class="text-align-center" dir="ltr"><em>Tabla 7. Salario por tipo de empresa</em></p> <p dir="ltr">Más allá del tipo de organización, algo que hay que considerar es si esta le vende a mercado nacional o internacional. Como podemos ver en la tabla 8, las personas que trabajan en empresas con clientes internacionales tienen mucho mejores salarios.</p> <p class="text-align-center" dir="ltr"><meta charset="utf-8" /><b id="docs-internal-guid-76f2111b-7fff-a814-1fa5-70f738944490"><img height="79" src="https://lh6.googleusercontent.com/nKJWSWxXpkQY0V_kCisAdDzLccfRneRYFWhwrgOUOnrPTwOPktqlhmbllyZ9swjQ7S-V1mfSx7dIvPO2Noa-nZH0ERdMJAmtMvsAg_Qtf9kEPZemW43Mkj4oblHK8C4yJgG_I0Wm" width="503" /></b></p> <p dir="ltr"> </p> <p class="text-align-center" dir="ltr"><em><meta charset="utf-8" />Tabla 8. Clientes locales vs internacionales</em></p> <h3 dir="ltr">Género</h3> <p dir="ltr">La tabla 9 muestra el salario medio desglosado por género. Los resultados son prácticamente los mismos que desde que comenzamos a realizar esta encuesta hace más de diez años: no logramos rebasar el 16% de participación de mujeres, y su salario se mantiene cerca de 25% menor que el de sus contrapartes masculinas. Lo que sea que estamos haciendo como industria, no es suficiente. Necesitamos hacer más.</p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-0e71afc7-7fff-c8ba-d244-e8ee36ca96b4"><img height="105" src="https://lh6.googleusercontent.com/vZA4tj8jGtfBZFXjt0XOSg8YgS6CGc6ZooFYL8OhtgmB10cuh8U6a41gj7aiW1gBfrmAEmsDBLhTY-yg-qt3Asl3dqTGsyh_lxxXsjnmK4kYN77zwLj7csa3f8LQa0oCuKEt1Uny" width="507" /></b></p> <p class="text-align-center" dir="ltr"><em>Tabla 9. Representación y salario de hombres vs. mujeres</em><meta charset="utf-8" /></p> <h3 dir="ltr">Conocimientos</h3> <p dir="ltr">La tabla 10 muestra cómo varía compensación de acuerdo al dominio del idioma inglés. Una vez más se comprueba que este es el conocimiento más importante en nuestra profesión y con mayor impacto en la compensación.</p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-88313c14-7fff-a90d-7196-573f337a5c4d"><img height="154" src="https://lh6.googleusercontent.com/7WFLY4bTLj6MW4xnLQ34StBPxCBLhbUARF9vDT8SqSua88dr7dDBpUwzvkcsvYcKK4MCyKwphzjz1gkHBYKa5INuNINNh6tMm8J6WRijv4_2DWyGi890JqZVbZyDwfyZN3lOjov1" width="507" /></b></p> <p class="text-align-center" dir="ltr"><em>Tabla 10. Salario por nivel de inglés</em></p> <p dir="ltr">Veamos a continuación cómo se comporta el salario dependiendo de las herramientas y tecnologías que utiliza la persona para hacer su trabajo. Además de la compensación, es muy interesante en cada caso ver el tamaño de la muestra para comparar la adopción de cada tecnología.</p> <p dir="ltr"><strong>Lenguaje de programación.</strong> Elixir y Go han cobrado popularidad entre desarrolladores experimentados enfocados al back-end, y esto se refleja en el salario medio de quienes lo usan. Otro caso notable es el de Python, que sin ser un lenguaje nuevo ha ganado bastante popularidad en tiempos recientes, impulsado especialmente por su uso para procesamiento de datos. El resto se mantiene similar a años anteriores: JavaScript es el lenguaje más usado seguido de Java y C#, y PHP se mantiene en el último peldaño de compensación.</p> <p dir="ltr"><strong>Tecnología front-end.</strong> En el caso de los front-end frameworks, Ember y Cocoa se mantienen como frameworks de especialidad, bien compensados. React continúa creciendo significativamente, y ya no está tan lejos de Angular en cuestión de utilización, siendo que este último le lleva varios años de ventaja.</p> <p dir="ltr"><strong>Infraestructura.</strong> Podemos ver la importancia que está tomando aprender a manejar infraestructura en la nube, especialmente usando herramientas como Kubernetes y Ansible. En cuanto a los proveedores cloud, comprobamos que AWS lleva la delantera en adopción.</p> <p dir="ltr"><strong>Certificaciones.</strong> Las certificaciones orientadas al negocio, como Business Analyst o Enterprise Architect se mantienen con la mayor compensación, por encima de los PMPs que fueron los reyes anteriormente. En cuanto a las certificaciones técnicas, la de Arquitecto de soluciones de AWS parece ser la más valorada.</p> <p class="text-align-center" dir="ltr"><meta charset="utf-8" /><b id="docs-internal-guid-eb2f4c62-7fff-a064-ce4e-34a6f8ba7bd9"><img height="483" src="https://lh6.googleusercontent.com/igfGywRDkXMlvKo1F6dlI7rn1QQNsyhBUIW-vgYEddzkq8_-byy8q3O2lrTF7nC5o1OI0zPbLhprrw65cpgGERxq9DYO1wB9hDM2JJK_tv755OHs2vC-A9v3EsJs6WQlWLxqL3fo" width="506" /></b><meta charset="utf-8" /></p> <p class="text-align-center" dir="ltr"><em>Tabla 11. Desglose por lenguaje de programación.</em></p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-37e6fae1-7fff-d396-9b8c-c1a98fb72ff4"><img height="255" src="https://lh6.googleusercontent.com/YyM3pEXLcL8OaNE4AUUOOW-JfpgoHhOMKSiCYfq-YOpx22A_X2Xkc3FSGrNvDAS_3of1oY6zPObVpsqXMBU85V7zEhf5epgW-EqSfz9ygjYUXAAgeiYpM7FLV_LRBnyoIN051ow-" width="507" /></b></p> <p class="text-align-center" dir="ltr"><em>Tabla 12. Desglose por tecnología front-end.</em></p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-37e6fae1-7fff-d396-9b8c-c1a98fb72ff4"><img height="230" src="https://lh3.googleusercontent.com/q1rQaFTmkWZAGD1uVsoHT75MQa4e3XGVCo0moTelf_9ABA-lvvN5CPR2P15eiLL_bhc7s3LVQmd557gYgGhM0Q4sZD6RFwtt6Q4gvtOGKl6nWdYpjFRU3csJNPLCDWxCsRPLLZD6" width="524" /></b></p> <p class="text-align-center" dir="ltr"><em>Tabla 13. Desglose por plataforma de infraestructura.</em></p> <p class="text-align-center" dir="ltr"><meta charset="utf-8" /><b id="docs-internal-guid-a484030d-7fff-08cc-a520-61ce254f27f9"><img height="741" src="https://lh4.googleusercontent.com/cu7NKRHDlQdjaK-oP991PpOGhIChy9CpOYbD4dFbAJGuu3sbc-kQfngZPpjzTK0BDwbvkl1OqozNlGXTaty8BhYdHP8-8aUfEs1QlRIqUBgcalXFuB7vJeBiWEfrZsZebaYzlg1m" width="507" /></b></p> <p class="text-align-center" dir="ltr"><em><meta charset="utf-8" />Tabla 14. Desglose por certificación.</em></p> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> <h2 class="title">Comentarios</h2> <article role="article" data-comment-user-id="59195" id="comment-1" about="/comment/1" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1590044648"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Thu, 05/21/2020 - 02:04 <span property="schema:dateCreated" content="2020-05-21T07:04:08+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/1#comment-1" class="permalink" rel="bookmark" hreflang="en">Really helpful post</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Really helpful post! There is a great deal of info right here that can aid any company obtain started with a successful social networking campaign. <a href="https://sites.google.com/view/url-roku-com-link">roku.com/link</a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=1&amp;1=default&amp;2=en&amp;3=" token="f2l6E3exSxFDxa_4V_oxZaC4lhbUjGxcEMIVDS7iiXI"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-2" about="/comment/2" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1590214165"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Sat, 05/23/2020 - 01:09 <span property="schema:dateCreated" content="2020-05-23T06:09:25+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/2#comment-2" class="permalink" rel="bookmark" hreflang="en">This is a wonderful article</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>First You got a wonderful blog site.<br /> I will have an interest in more similar topics. I see you obtained really extremely useful topics,<br /> i will be always examining your blog site thanks.  <a href="https://konbanegacrorepati.com/kbc-lottery-winner-2020-kbc-lottery-number-check-kbc-lottery-2020/">kbc lottery</a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=2&amp;1=default&amp;2=en&amp;3=" token="8HyszN_uZaobqtd30DdLSRD9p71vJt7YwSHUzjLPUDo"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-3" about="/comment/3" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1590218083"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Sat, 05/23/2020 - 02:14 <span property="schema:dateCreated" content="2020-05-23T07:14:43+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/3#comment-3" class="permalink" rel="bookmark" hreflang="en">This is a wonderful article</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>I obtained excessive interesting stuff on your blog.<br /> I presume I am not the only one having all the pleasure right here!<br /> Maintain the good work.   <a href="https://konbanegacrorepati.in/kbc-lottery-winner-25-lakh-kbc-lottery-kbc-helpline-number-for-jio/">kbc lottery winner</a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=3&amp;1=default&amp;2=en&amp;3=" token="0OyyOQQqaGvdq26UA1cWNzmOvoFjuLoAqp4RXqYk6XA"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-4" about="/comment/4" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1590218297"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Sat, 05/23/2020 - 02:18 <span property="schema:dateCreated" content="2020-05-23T07:18:17+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/4#comment-4" class="permalink" rel="bookmark" hreflang="en">This is a wonderful article</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Terrific task below on.<br /> I review a great deal of article, however I never ever heard a topic similar to this.<br /> I Love this topic you made regarding the blog owner's bucket checklist. Extremely clever. <a href="https://konbanegacrorepati.com/kbc-jio-lottery-winner-check-imo-number-lucky-draw-from-kbc/">kbc lottery</a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=4&amp;1=default&amp;2=en&amp;3=" token="XOtoOEajTmGO-ySbCbuuJ-3RWGWOq9TFLYj6XhVpmVk"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-5" about="/comment/5" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1590218455"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Sat, 05/23/2020 - 02:20 <span property="schema:dateCreated" content="2020-05-23T07:20:55+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/5#comment-5" class="permalink" rel="bookmark" hreflang="en">This is a wonderful article</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Good blog post but I was wondering if you could create a little much more on this topic?<br /> I 'd be extremely appreciative if you can elaborate a bit additional.<br /> Value it!   <a href="https://konbanegacrorepati.com/kbc-head-office-number-for-kbc-lottery-winner-list-kbc-number/">kbc number </a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=5&amp;1=default&amp;2=en&amp;3=" token="snLK4uT1j2VtGw-KzkfvzjF68wCrC45QPo-Mz5zLNL4"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-6" about="/comment/6" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1590218552"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Sat, 05/23/2020 - 02:22 <span property="schema:dateCreated" content="2020-05-23T07:22:32+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/6#comment-6" class="permalink" rel="bookmark" hreflang="en">This is a wonderful article</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>I'm sure that you will be making a really beneficial location.<br /> Good do!   <strong><a href="https://konbanegacrorepati.in/kbc-lottery-winner-25-lakh-kbc-lottery-kbc-helpline-number-for-jio/">kbc lottery winner</a></strong></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=6&amp;1=default&amp;2=en&amp;3=" token="YOvOPkYyezkDei4jbX-Y_dXXcbCdlvz95pDfUiTx6R8"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-7" about="/comment/7" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1590223689"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Sat, 05/23/2020 - 03:48 <span property="schema:dateCreated" content="2020-05-23T08:48:09+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/7#comment-7" class="permalink" rel="bookmark" hreflang="en">This is a wonderful article</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>These certain papers amazing,<br /> and My partner and I appreciate each of the execute that you have actually put right into this.  <br /> I'm certain that you will certainly be making a truly beneficial place.<br /> I have actually been furthermore delighted. Excellent perform!   <a href="https://konbanegacrorepati.com/kbc-jio-lottery-winner-check-imo-number-lucky-draw-from-kbc/">jio lottery winner</a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=7&amp;1=default&amp;2=en&amp;3=" token="gSITky6KmlYh8k3gzKegeQw5Ab0eMLcMkqN0j1ewtsc"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-8" about="/comment/8" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1590390069"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Mon, 05/25/2020 - 02:01 <span property="schema:dateCreated" content="2020-05-25T07:01:09+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/8#comment-8" class="permalink" rel="bookmark" hreflang="en">This is a wonderful article</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Great Article it's cutting-edge and also truly informative maintain us published with new updates.<br /> its was truly valuable. thanks a great deal. <a href="https://www.digics.org">best email marketing software for small business</a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=8&amp;1=default&amp;2=en&amp;3=" token="roEwVhPI8x3guUlKO4gZlMfjatgWmh9ZcaE9ZvBUEwo"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-9" about="/comment/9" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1590564829"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Wed, 05/27/2020 - 02:33 <span property="schema:dateCreated" content="2020-05-27T07:33:49+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/9#comment-9" class="permalink" rel="bookmark" hreflang="en">Really helpful post</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>I'm sure that you will be making a really valuable location.<br /> Good do!  <a href="https://mas.net.au/">Anaesthesia Solutions</a></p> <p> </p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=9&amp;1=default&amp;2=en&amp;3=" token="vyc1qmhuDymXFj5qDjqj_ZYSn1Uhj93eGQ3_XlPo-tI"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-10" about="/comment/10" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1590628485"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Wed, 05/27/2020 - 20:14 <span property="schema:dateCreated" content="2020-05-28T01:14:45+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/10#comment-10" class="permalink" rel="bookmark" hreflang="en">This is a wonderful article</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Think it or otherwise,<br /> it is the sort of details I've long been looking for.<br /> It matches my requirements a lot.<br /> Thank you for writing this information.   <a href="https://jiolotterywinner.com/">jio lottery winner 2020</a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=10&amp;1=default&amp;2=en&amp;3=" token="aMFSqcJuqpvz4JlBaHcijatXY1Y63RcKJnI8tqchiNE"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-11" about="/comment/11" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1590628605"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Wed, 05/27/2020 - 20:16 <span property="schema:dateCreated" content="2020-05-28T01:16:45+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/11#comment-11" class="permalink" rel="bookmark" hreflang="en">This is a wonderful article</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>You have actually done a fantastic job on this write-up.<br /> It's really understandable and also very smart. You have actually even taken care of to make<br /> it understandable as well as very easy to check out. You have some actual composing ability.<br /> Thank you.   <a href="https://jiolotterywinner.com/">kbc lottery 2020</a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=11&amp;1=default&amp;2=en&amp;3=" token="0A85YrcWGCWvxuODug41XsQvMKO0gFynzZGMdBi--mg"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="58234" id="comment-12" about="/comment/12" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1590739142"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/58234" lang="" about="/user/58234" typeof="schema:Person" property="schema:name" datatype="" class="username">johnmartin1458</a></span> on Fri, 05/29/2020 - 02:59 <span property="schema:dateCreated" content="2020-05-29T07:59:02+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/12#comment-12" class="permalink" rel="bookmark" hreflang="en">asda e cigs</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p><span><span><span><span><span><span>Very nice article, I enjoyed reading your post, very nice share, I want to twit this to my followers. Thanks!. <a href="https://www.finestelectroniccigarette.co.uk/">e cigarette asda</a></span></span></span></span></span></span></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=12&amp;1=default&amp;2=en&amp;3=" token="Sk0O2QeUMK6QxjnXWQPK6VkeGg4AZNFkU9-Od55fSmg"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-13" about="/comment/13" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1590780260"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Fri, 05/29/2020 - 14:24 <span property="schema:dateCreated" content="2020-05-29T19:24:20+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/13#comment-13" class="permalink" rel="bookmark" hreflang="en">This is a wonderful article</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>I want you to give thanks to for your time of this fantastic read!!!<br /> I certainly enjoy every little of it and I have you bookmarked to have<br /> a look at new things of your blog a must-read blog site!   <a href="https://packwoods.net/"><strong>Packwoods</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=13&amp;1=default&amp;2=en&amp;3=" token="Ou6y29anVjWqLTSkfLj1VBJgcbZCKOzE9EDLesNaUnY"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="58234" id="comment-18" about="/comment/18" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591000117"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/58234" lang="" about="/user/58234" typeof="schema:Person" property="schema:name" datatype="" class="username">johnmartin1458</a></span> on Mon, 06/01/2020 - 03:28 <span property="schema:dateCreated" content="2020-06-01T08:28:37+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/18#comment-18" class="permalink" rel="bookmark" hreflang="en">head up display</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p><span><span><span><span><span><span>I will be interested in more similar topics. i i will be always checking your blog thanks  <a href="http://www.car-hud.net/">head up car display</a></span></span></span></span></span></span></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=18&amp;1=default&amp;2=en&amp;3=" token="jVhirhDd91eC6XV9WsQl4PLehFgKsOgX9j8i4FgvScs"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-19" about="/comment/19" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591242750"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Wed, 06/03/2020 - 22:52 <span property="schema:dateCreated" content="2020-06-04T03:52:30+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/19#comment-19" class="permalink" rel="bookmark" hreflang="en">a must-read blog!</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>I desire you to give thanks to for your time of this terrific read!!! I most definitely appreciate every bit of it and also I have you bookmarked to look into new stuff of your blog site a must-read blog!   <a href="https://konbanegacrorepati.com/kbc-head-office-number-kbc-head-office-number-kolkata/">kbc head office number</a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=19&amp;1=default&amp;2=en&amp;3=" token="pFM0YP_kPDKouK2EtUL6FOjpmw7K7wAbolYISDNrUb4"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-20" about="/comment/20" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591292273"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Thu, 06/04/2020 - 12:37 <span property="schema:dateCreated" content="2020-06-04T17:37:53+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/20#comment-20" class="permalink" rel="bookmark" hreflang="en">This is a wonderful article</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>No question this is an outstanding post I obtained a great deal of understanding after reading all the best. The style of the blog is excellent there is virtually everything to check out, Brilliant post.  <strong><a href="https://konbanegacrorepati.com/kbc-lottery-winner-whatsapp-call-2020-kbc-lottery-fake-whatsapp/">kbc winner</a></strong></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=20&amp;1=default&amp;2=en&amp;3=" token="mjQjIFksqJ6ZjM-qsZdXnbdMOPuJzQMyYgUZM2WJMiA"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-21" about="/comment/21" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591295907"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Thu, 06/04/2020 - 13:38 <span property="schema:dateCreated" content="2020-06-04T18:38:27+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/21#comment-21" class="permalink" rel="bookmark" hreflang="en">This is a wonderful article</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>I can not wait to dig kickoff and deep utilizing sources that I got from you. Your liveliness is rejuvenating.  <strong><a href="https://konbanegacrorepati.com/kbc-head-office-mumbai-contact-number-kbc-helpline-number/">kbc helpline number</a></strong></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=21&amp;1=default&amp;2=en&amp;3=" token="Ggjh53CjBkn-negFdWrONd_yCijxV8Mb1wMgJ0wJqUw"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-22" about="/comment/22" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591300478"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Thu, 06/04/2020 - 14:54 <span property="schema:dateCreated" content="2020-06-04T19:54:38+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/22#comment-22" class="permalink" rel="bookmark" hreflang="en">a must-read blog!</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>The most effective post I came throughout a number of years, write something about it on this web page.  <a href="https://konbanegacrorepati.com/kbc-customer-care-number-india-kbc-toll-free-number-jio/"><strong>kbc customer care number</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=22&amp;1=default&amp;2=en&amp;3=" token="rJ2syhXxSTzPtO3f-xSV6Fs1M_Nsn-df2k3Ognh9R1A"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-23" about="/comment/23" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591302432"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Thu, 06/04/2020 - 15:27 <span property="schema:dateCreated" content="2020-06-04T20:27:12+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/23#comment-23" class="permalink" rel="bookmark" hreflang="en">a must-read blog!</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Great Article it's actually informative and innovative maintain us posted with brand-new updates. its was actually useful. thanks a whole lot.  <a href="https://konbanegacrorepati.in/jio-kbc-lottery-winner-list/">kbc winner list</a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=23&amp;1=default&amp;2=en&amp;3=" token="_lwPPJxAcgI7OLm8g8DrLbktb0ltUs7K5ctqtdtgsRg"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-24" about="/comment/24" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591305183"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Thu, 06/04/2020 - 16:13 <span property="schema:dateCreated" content="2020-06-04T21:13:03+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/24#comment-24" class="permalink" rel="bookmark" hreflang="en">Wonderful blog</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Wonderful blog site! Do you have any kind of pointers as well as hints for aspiring writers? I'm intending to start my own website soon but I'm a little shed on everything. Would certainly you propose starting with a cost-free platform like WordPress or go with a paid option? There are a lot of alternatives out there that I'm totally overwhelmed. Any kind of recommendations? Many many thanks! <a href="https://jiolotterywinner.com/"><strong> jio lottery winner 2021</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=24&amp;1=default&amp;2=en&amp;3=" token="Y0HrI9yD7LjoeB0ikoxwOJbC_PCRB8j86_jHY_zw1Fw"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-25" about="/comment/25" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591305274"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Thu, 06/04/2020 - 16:14 <span property="schema:dateCreated" content="2020-06-04T21:14:34+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/25#comment-25" class="permalink" rel="bookmark" hreflang="en">Fabulous article</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Fabulous article, you have actually denoted out some wonderful points, I also think this s an extremely terrific internet site. I will see again for more quality material as well as also, recommend this site to all. Thanks.  <a href="https://jiolotterywinner.com/"><strong>kbc lottery 2021</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=25&amp;1=default&amp;2=en&amp;3=" token="qem1Dc2wrT4twn13D1hSVNT8keaYj3Io-NP0vJGKzsI"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-26" about="/comment/26" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591404063"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Fri, 06/05/2020 - 19:41 <span property="schema:dateCreated" content="2020-06-06T00:41:03+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/26#comment-26" class="permalink" rel="bookmark" hreflang="en">Actually impressed! </a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Whatever is extremely clear as well as really open clarification of problems. It consists of real facts. Your internet site is very important. Many thanks for sharing.  <a href="http://www.kamagra-il.com/products/fildena/"><strong>fildena</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=26&amp;1=default&amp;2=en&amp;3=" token="EmVUnj3z2YTfN-OcyU4E9A4MBsv14xGvLjouZVdNTnc"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-27" about="/comment/27" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591748372"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Tue, 06/09/2020 - 19:19 <span property="schema:dateCreated" content="2020-06-10T00:19:32+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/27#comment-27" class="permalink" rel="bookmark" hreflang="en">The American Crisis…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>The American Crisis Prevention and Management Association has been providing crisis prevention, intervention and management training, certification, consulting that help individuals and organizations for over a decade.   <a href="https://crisispreventionmanagement.com/mab-management-of-assaultive-behavior"><strong>MAB Certification Course Online</strong></a></p> <p> </p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=27&amp;1=default&amp;2=en&amp;3=" token="otqyAq8w5Pd0NDlWnsqJTdnPUTbkZ3076qwkZ7AXGc8"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-28" about="/comment/28" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591759118"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Tue, 06/09/2020 - 22:18 <span property="schema:dateCreated" content="2020-06-10T03:18:38+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/28#comment-28" class="permalink" rel="bookmark" hreflang="en">a must-read blog!</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Really amazed! Everything is extremely clear and also extremely open clarification of problems. It contains real realities. Your internet site is extremely useful. Thanks for sharing.    <strong><a href="https://www.baynoo.com/">how to find a company</a></strong></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=28&amp;1=default&amp;2=en&amp;3=" token="le-tHWxu1NXHoWnyw-2e1_wePhRmxx9D9bCLgjmYCH4"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-29" about="/comment/29" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591843907"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Wed, 06/10/2020 - 21:51 <span property="schema:dateCreated" content="2020-06-11T02:51:47+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/29#comment-29" class="permalink" rel="bookmark" hreflang="en">Outstanding blog post.</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Outstanding blog post. I was always checking this blog, and I'm amazed! Very useful information particularly the tail end, I care for such information a great deal. I was exploring this specific info for a long time. Many thanks to this blog my expedition has actually ended. <a href="https://kbclotterywinner.com/"><strong>kbc lottery winner 2021</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=29&amp;1=default&amp;2=en&amp;3=" token="4n4ptbBP0AliduNAuNHQiAPytAHPtuJgZKkRRToI18o"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-30" about="/comment/30" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591850739"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Wed, 06/10/2020 - 23:45 <span property="schema:dateCreated" content="2020-06-11T04:45:39+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/30#comment-30" class="permalink" rel="bookmark" hreflang="en">I can not wait to dig…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>I can not wait to dig kickoff and deep using sources that I received from you. Your spirit is revitalizing. <a href="https://kbclotterywinner.com/"><strong>kbc winner list</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=30&amp;1=default&amp;2=en&amp;3=" token="7KamS9md4nLnx4i124hsbdFI0Dngd3yFy624fpC9VIY"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-31" about="/comment/31" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591868687"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Thu, 06/11/2020 - 04:44 <span property="schema:dateCreated" content="2020-06-11T09:44:47+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/31#comment-31" class="permalink" rel="bookmark" hreflang="en">Effectively composed details…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Effectively composed details. It will certainly pay to anybody who utilizes it, counting me. Maintain the great. For sure I will certainly assess out even more blog posts an everyday.   <a href="https://jiolotterywinner.com/"><strong>jio lottery</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=31&amp;1=default&amp;2=en&amp;3=" token="TfcTym3RFCv7pWBG63bLKLLzNEB5pc2ByBwJiCZUDr4"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-32" about="/comment/32" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591873660"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Thu, 06/11/2020 - 06:07 <span property="schema:dateCreated" content="2020-06-11T11:07:40+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/32#comment-32" class="permalink" rel="bookmark" hreflang="en">I truly delighted in reading…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>I truly delighted in reading this article, large fan. Maintain up the great and also please inform me when can you release extra write-ups or where can I find out more on the topic?     <a href="https://jiolotterywinner.com/"><strong>jio winner</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=32&amp;1=default&amp;2=en&amp;3=" token="jq4Ec-y1qsP57EP-n5He1zEXIj34lMlEXe7GGeXB2RI"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-33" about="/comment/33" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591876816"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Thu, 06/11/2020 - 07:00 <span property="schema:dateCreated" content="2020-06-11T12:00:16+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/33#comment-33" class="permalink" rel="bookmark" hreflang="en">You obtained a fantastic…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>You obtained a fantastic blog. I will certainly want more comparable subjects. I see you got really extremely helpful subjects, I will be constantly examining your blog site many thanks.   <span><strong><span><a href="https://jiolotterywinner.com/">kbc lucky winner 2021</a> </span></strong></span></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=33&amp;1=default&amp;2=en&amp;3=" token="mK-J0A8X34ALX2iIJHbM3TrtGCfKFG4ODtJyKpXPO3Q"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-34" about="/comment/34" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591879713"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Thu, 06/11/2020 - 07:48 <span property="schema:dateCreated" content="2020-06-11T12:48:33+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/34#comment-34" class="permalink" rel="bookmark" hreflang="en">I review a lot of blog site…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>I review a lot of blog site messages, yet I never heard a subject like this. I Love this topic you made regarding the blogger's container list.   <a href="https://konbanegacrorepati.com/kbc-head-office-number-kbc-head-office-number-kolkata/"><strong>kbc head office number</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=34&amp;1=default&amp;2=en&amp;3=" token="5Ndj6-NY2Rp4CIlcOJ9Py-2-MLvBNF34yZ1q6Vjwifg"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-35" about="/comment/35" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1591883470"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Thu, 06/11/2020 - 08:51 <span property="schema:dateCreated" content="2020-06-11T13:51:10+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/35#comment-35" class="permalink" rel="bookmark" hreflang="en">Pretty wonderful post. I…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Pretty wonderful post. I just came across your weblog and also wished to state that I have actually appreciated browsing your blog articles. Besides, I'll be signing up for your feed as well as I wish you create once again quickly!   <a href="https://konbanegacrorepati.in/kbc-lottery-winner-25-lakh-kbc-lottery-kbc-helpline-number-for-jio/"><strong>kbc lottery winner</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=35&amp;1=default&amp;2=en&amp;3=" token="DSefK3-G_F6N4Jw_ugZ_GuGwCtN4o0iaHZNVxUJ16sM"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-36" about="/comment/36" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1592077118"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Sat, 06/13/2020 - 14:38 <span property="schema:dateCreated" content="2020-06-13T19:38:38+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/36#comment-36" class="permalink" rel="bookmark" hreflang="en">Think it or otherwise, it is…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Think it or otherwise, it is the kind of information I've long been looking for. It matches my requirements a whole lot. Thank you for creating this info.   <a href="https://robwalkerapparel.com/blogs/news"><strong>self care</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=36&amp;1=default&amp;2=en&amp;3=" token="p5cbrQ-JXGqnV8y40KOWbSfElb2H2M3H6m4sKApSohQ"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-37" about="/comment/37" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1592186311"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Sun, 06/14/2020 - 20:58 <span property="schema:dateCreated" content="2020-06-15T01:58:31+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/37#comment-37" class="permalink" rel="bookmark" hreflang="en">Pretty good blog post</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Pretty good blog post. I simply came across your weblog and also wanted to state that I have actually truly taken pleasure in surfing your post. I'll be subscribing to your feed and also I wish you compose again soon! <a href="https://mt-112.com">먹튀검증</a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=37&amp;1=default&amp;2=en&amp;3=" token="aa5h27Zf_Io7eS7_oKymx0W8fnjVh-hWQNuWQ3Ciw78"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-38" about="/comment/38" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1594025092"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Mon, 06/15/2020 - 16:56 <span property="schema:dateCreated" content="2020-06-15T21:56:03+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/38#comment-38" class="permalink" rel="bookmark" hreflang="en">No question this is an…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Think it or otherwise, it is the type of information I've long been attempting to discover. It matches my needs a great deal. Thanks for writing this details.  <a href="https://nzemarc.com/"><strong><span>buy opdivo online</span></strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=38&amp;1=default&amp;2=en&amp;3=" token="Kp71kBs1el410NhBpfenh3PMri37GPQSw9Csso9QNSI"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-39" about="/comment/39" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1592596337"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Fri, 06/19/2020 - 14:52 <span property="schema:dateCreated" content="2020-06-19T19:52:17+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/39#comment-39" class="permalink" rel="bookmark" hreflang="en">I want you to thank for your…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>I want you to thank for your time of this terrific read!!! I certainly take pleasure in every little bit of it and also I have you bookmarked to have a look at brand-new stuff of your blog a must-read blog!   <a href="https://www.argadetectives.com/"><strong>investigadores privados Madrid</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=39&amp;1=default&amp;2=en&amp;3=" token="8UbxIZw5_YmbmU0LPlgtpi_uUwG2kXorjy13cQVJDaE"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-40" about="/comment/40" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1592681607"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Sat, 06/20/2020 - 14:33 <span property="schema:dateCreated" content="2020-06-20T19:33:27+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/40#comment-40" class="permalink" rel="bookmark" hreflang="en">Really helpful post</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Believe it or not, it is the kind of details I've long been attempting to locate. It matches my demands a lot. Thank you for composing this information.   <strong><a href="https://ytmp3.ch">ytmp3</a></strong></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=40&amp;1=default&amp;2=en&amp;3=" token="8RxD22SSj5vnfxJTLnnbwsswMZnJXz7H4QvoCZiQGPQ"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-41" about="/comment/41" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1592892990"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Tue, 06/23/2020 - 01:16 <span property="schema:dateCreated" content="2020-06-23T06:16:30+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/41#comment-41" class="permalink" rel="bookmark" hreflang="en">This is an amazing post I…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>This is an amazing post I have seen due to the deal it. It is really what I expected to see count on the future you will certainly proceed in sharing such a mind-blowing message.  <a href="https://www.hdassignment.com">悉尼代写</a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=41&amp;1=default&amp;2=en&amp;3=" token="A0mMZoJGsihZPNFFHICIThJQIiBjCGLmlqY3bTfE61U"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-42" about="/comment/42" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1593285862"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Sat, 06/27/2020 - 14:24 <span property="schema:dateCreated" content="2020-06-27T19:24:22+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/42#comment-42" class="permalink" rel="bookmark" hreflang="en">it looks wonderful.</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Hi there, I found your site by means of Google while looking for a related subject, your internet site turned up, it looks wonderful. I have bookmarked it in my google book markings.  <strong><a href="https://downloadbytes.com">windows 7 download</a></strong></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=42&amp;1=default&amp;2=en&amp;3=" token="jTyXG9yPp5HG-5eFR3y5lHxuBvcV4a0q5S4t0pXGl_g"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-43" about="/comment/43" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1593806386"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Fri, 07/03/2020 - 14:59 <span property="schema:dateCreated" content="2020-07-03T19:59:46+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/43#comment-43" class="permalink" rel="bookmark" hreflang="en">Routine brows through…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Routine brows through provided right here are the easiest method to appreciate your energy, which is why I am going to the site everyday, looking for new, interesting details. Thanks!   <a href="https://sony-kbc.com/kbc-lottery-winner-list-2020/"><strong>kbc lottery winner 2021</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=43&amp;1=default&amp;2=en&amp;3=" token="0CBfscSMVhEtdl-7xNrRgPHHetR-E1pufZ6nBV81nNA"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-44" about="/comment/44" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1593806867"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Fri, 07/03/2020 - 15:07 <span property="schema:dateCreated" content="2020-07-03T20:07:47+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/44#comment-44" class="permalink" rel="bookmark" hreflang="en">Actually amazed! Everything…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Actually amazed! Everything is very clear and also really open clarification of issues. It consists of real facts. Your site is really beneficial. Many thanks for sharing.  <a href="https://sony-kbc.com/vodafone-winner-2020/"><strong>vodafone lottery winner</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=44&amp;1=default&amp;2=en&amp;3=" token="qf3mmt8euf92bfJyrUCgxLdeia7MEJffOVboYOALmzg"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-45" about="/comment/45" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1594025459"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Mon, 07/06/2020 - 03:50 <span property="schema:dateCreated" content="2020-07-06T08:50:59+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/45#comment-45" class="permalink" rel="bookmark" hreflang="en">Truly amazed! Whatever is…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Truly amazed! Whatever is very clear and also really open clarification of problems. It consists of true facts. Your website is really valuable. Thanks for sharing.   <a href="https://gen-pharm.com/%d7%95%d7%99%d7%90%d7%92%d7%a8%d7%94-%d7%9c%d7%9e%d7%9b%d7%99%d7%a8%d7%94-%d7%9c%d7%9c%d7%90-%d7%9e%d7%a8%d7%a9%d7%9d/">ויאגרה בלי מרשם</a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=45&amp;1=default&amp;2=en&amp;3=" token="D9IqdQcelzOYWuOyKEUJMQv21HcVrrmi6ZtFirVKILQ"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-46" about="/comment/46" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1594219934"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Wed, 07/08/2020 - 09:52 <span property="schema:dateCreated" content="2020-07-08T14:52:14+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/46#comment-46" class="permalink" rel="bookmark" hreflang="en">Keep up the great job; I…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Keep up the great job; I review a couple of blog posts on this internet site, including I take into consideration that your blog site is fascinating as well as has sets of great item of info. Many thanks for your useful initiatives.  <a href="https://kstreamingvf.fr/">https://kstreamingvf.fr/</a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=46&amp;1=default&amp;2=en&amp;3=" token="gedjSAkNeSxUx8t2wJaPnNQFELS_DwaigcB_qfBpLRs"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-49" about="/comment/49" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1594330170"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Thu, 07/09/2020 - 16:29 <span property="schema:dateCreated" content="2020-07-09T21:29:30+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/49#comment-49" class="permalink" rel="bookmark" hreflang="en">I review a great deal of…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>I review a great deal of blog site posts, yet I never heard a topic like this. I review a great deal of blog site articles, but I never listened to a subject like this. Positive site, where did u come up with the information on this posting? I simply stumbled upon your weblog as well as wanted to say that I have really appreciated browsing your blog articles. Positive website, where did u come up with the info on this uploading?   <a href="https://sony-kbc.com/"><strong>jio lottery</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=49&amp;1=default&amp;2=en&amp;3=" token="2bW4gH3KUsfISmgVb-IEas6wHmfqlnC3dv3_lvUWzdE"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-50" about="/comment/50" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1594330260"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Thu, 07/09/2020 - 16:31 <span property="schema:dateCreated" content="2020-07-09T21:31:00+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/50#comment-50" class="permalink" rel="bookmark" hreflang="en">Extremely insightful article…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Extremely insightful article! There is a great deal of details below that can assist any type of business start with a successful social networking project.   <a href="https://sonykbcliv.com/"><strong>kbc lottery 2021</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=50&amp;1=default&amp;2=en&amp;3=" token="mBBYRA2bSjbvhjATpZ349uybL4iAhfaDOtMHOwxP7oo"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-51" about="/comment/51" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1594593903"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Sun, 07/12/2020 - 17:45 <span property="schema:dateCreated" content="2020-07-12T22:45:03+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/51#comment-51" class="permalink" rel="bookmark" hreflang="en">a must-read blog!</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Fabulous message, you have actually represented out some superb factors, I furthermore think this s an extremely fantastic internet site. I will certainly check out again for more quality material and also, advise this site to all. Many thanks.   <a href="https://downloadnplay.com/2020/02/01/gta-san-andreas-download-free-for-pc/"><strong>GTA San Andreas PC Game Download</strong></a></p> <p> </p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=51&amp;1=default&amp;2=en&amp;3=" token="UmDD8Q93a6A9HrLqGvT8E46Xb88_Ut-oRvYt9jsKbrk"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-52" about="/comment/52" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1594768499"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Tue, 07/14/2020 - 18:14 <span property="schema:dateCreated" content="2020-07-14T23:14:59+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/52#comment-52" class="permalink" rel="bookmark" hreflang="en">Great job right here on. I…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Great job right here on. I read a lot of blog articles, however I never heard a subject like this. I Love this subject you made concerning the blog owner's pail list. Extremely clever.  <a href="https://sony-kbc.com/kbc-lottery-online/"><strong>kbc head office number</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=52&amp;1=default&amp;2=en&amp;3=" token="0CeNmbeikEwUFjqSJGdCi627Veo-QTNG_kO0_L3CNIY"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-53" about="/comment/53" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1594768805"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Tue, 07/14/2020 - 18:20 <span property="schema:dateCreated" content="2020-07-14T23:20:05+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/53#comment-53" class="permalink" rel="bookmark" hreflang="en">Good message yet I was…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Good message yet I was wondering if you could compose a little bit extra on this topic? I would certainly be extremely happy if you could clarify a little bit further. Appreciate it!  <a href="https://sonykbcliv.com/check-kbc-lottery/"><strong>kbc check lottery no</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=53&amp;1=default&amp;2=en&amp;3=" token="YoL2HeMCtMUjkAs8DNSF_I4HkdrPeJDdN9h04oE5ejQ"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-54" about="/comment/54" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1594860087"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Wed, 07/15/2020 - 19:41 <span property="schema:dateCreated" content="2020-07-16T00:41:27+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/54#comment-54" class="permalink" rel="bookmark" hreflang="en">Amazing blog site! Do you…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Amazing blog site! Do you have any kind of pointers as well as hints for aiming writers? I'm planning to start my own website quickly however I'm a little lost on whatever. Would you propose starting with a free platform like WordPress or go for a paid option? There are numerous alternatives available that I'm entirely overwhelmed. Any pointers? Many thanks! <strong><a href="https://www.passyouressay.com">quiz代做</a></strong></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=54&amp;1=default&amp;2=en&amp;3=" token="paT6RE1-w6ChGg7JzhtHzFOdqnskJ7eDrE4I28mtVSU"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-55" about="/comment/55" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1594860188"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Wed, 07/15/2020 - 19:43 <span property="schema:dateCreated" content="2020-07-16T00:43:08+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/55#comment-55" class="permalink" rel="bookmark" hreflang="en">Fabulous message, you have…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Fabulous message, you have actually signified out some superb points, I also believe this s a really fantastic internet site. I will visit once again for more top quality web content as well as likewise, recommend this website to all. Many thanks.  <a href="http://paragonpoker.xyz/"><strong>paragonpoker</strong></a></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=55&amp;1=default&amp;2=en&amp;3=" token="OyaawYTpBpmKJ7jw5DtLL8rjasH4FeWTSwghGoJxP1o"></drupal-render-placeholder></nav> </article> <article role="article" data-comment-user-id="59195" id="comment-56" about="/comment/56" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1595119642"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/59195" lang="" about="/user/59195" typeof="schema:Person" property="schema:name" datatype="" class="username">Andrew Strauch</a></span> on Sat, 07/18/2020 - 19:47 <span property="schema:dateCreated" content="2020-07-19T00:47:22+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/56#comment-56" class="permalink" rel="bookmark" hreflang="en">Many thanks for sharing nice…</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p><strong>Many thanks for sharing nice info with us. I like your post as well as all you show us is up to date and rather helpful, I want to bookmark the web page so I can come below again to review you, as you have actually done a remarkable task.   </strong><strong><strong><a href="http://hppoker.org">Hppoker</a></strong></strong></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=56&amp;1=default&amp;2=en&amp;3=" token="V1Qu_29upv6yDqy15gnEIfgDsb3NNBTcwTZyVhh4JBc"></drupal-render-placeholder></nav> </article> <nav class="pager" role="navigation" aria-labelledby="pagination-heading"> <h4 id="pagination-heading" class="visually-hidden">Pagination</h4> <ul class="pager__items js-pager__items"> <li class="pager__item is-active"> <a href="/taxonomy/term/6879/feed?page=0" title="Current page"> <span class="visually-hidden"> Current page </span>1</a> </li> <li class="pager__item"> <a href="/taxonomy/term/6879/feed?page=1" title="Go to page 2"> <span class="visually-hidden"> Page </span>2</a> </li> <li class="pager__item pager__item--next"> <a href="/taxonomy/term/6879/feed?page=1" title="Go to next page" rel="next"> <span class="visually-hidden">Next page</span> <span aria-hidden="true">Next ›</span> </a> </li> <li class="pager__item pager__item--last"> <a href="/taxonomy/term/6879/feed?page=1" title="Go to last page"> <span class="visually-hidden">Last page</span> <span aria-hidden="true">Last »</span> </a> </li> </ul> </nav> </section> Wed, 06 Feb 2019 23:05:08 +0000 pedrogk 8527 at https://sg.com.mx https://sg.com.mx/revista/58/estudio-de-salarios-sg-2019#comments Las Mejores Empresas para Trabajar en Software 2018-2019 https://sg.com.mx/revista/58/las-mejores-empresas-para-trabajar-en-software-2018-2019 <span class="field field--name-title field--type-string field--label-hidden">Las Mejores Empresas para Trabajar en Software 2018-2019</span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-01/pexels-photo-1015568.jpeg" width="2250" height="1500" alt="" loading="lazy" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/44582" lang="" about="/user/44582" typeof="schema:Person" property="schema:name" datatype="" class="username">Ivett Sanchez</a></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 01/15/2019 - 15:56</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/58" hreflang="zxx">SG #58</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>&nbsp;</p> <p><meta charset="utf-8" /></p> <p dir="ltr">Las Mejores Empresas para Trabajar en Software 2018-2019</p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-5b7819bb-7fff-472a-7095-c65990fc9a6f"><img height="143" src="https://lh6.googleusercontent.com/nJ7EmimEi8IZMa2ROv3gr59mEjBwB8ep9DePnWLmpRwOTWXMf0XxpYmYVo1HwkLmK_LQfJgubvAEff83zqtw-nQ4QqXbPq8wwEqqw4ULVQpynKoJRhMg0iY0L_SnExWNZRmCVBqY" width="431" /></b></p> <p dir="ltr">A través de la iniciativa “Best Place to Code”, Software Guru identifica y reconoce a las empresas que se esfuerzan por brindar las mejores condiciones de trabajo y carrera para los profesionistas de software en nuestra región.</p> <p dir="ltr">A diferencia de las listas generadas en años anteriores por Software Guru, a partir de este año hemos formalizado el proceso de evaluación y establecido controles para asegurar que las personas que participan sí colaboran actualmente en la empresa.</p> <h3 dir="ltr">Proceso de evaluación</h3> <p dir="ltr">La evaluación se realizó por medio de un cuestionario contestado por los colaboradores de cada empresa, que considera cinco categorías:</p> <ul> <li dir="ltr"> <p dir="ltr">Compensación económica, que toma en cuenta tanto el salario como prestaciones adicionales, la posibilidad de adquirir participación (stock options), y el proceso para revisar y ajustar la compensación.</p> </li> <li dir="ltr"> <p dir="ltr">Desarrollo profesional, donde se incluyen aspectos como planes de carrera, capacitación, mentoría entre pares, y vinculación hacia el exterior de la organización.</p> </li> <li dir="ltr"> <p dir="ltr">Cultura laboral, que mide aspectos como el ambiente de trabajo, la relación con los superiores, la forma en que se resuelven conflictos, y la responsabilidad social.</p> </li> <li dir="ltr"> <p dir="ltr">Diversidad y equidad de género, para identificar a las organizaciones que brindan las mejores condiciones a mujeres y personas de género no binario.</p> </li> <li dir="ltr"> <p dir="ltr">Infraestructura, que considera aspectos como la ubicación de las oficinas, instalaciones, y disponibilidad de herramientas de trabajo.</p> </li> </ul> <p dir="ltr">Las evaluaciones se realizaron durante el 4to trimestre del 2018, y participaron 33 empresas. De estas, solamente 26 obtuvieron el puntaje necesario para ser acreditadas como “Best Place to Code”.</p> <h3 dir="ltr">El top 20</h3> <p dir="ltr">A continuación compartimos la lista “top 20” de Best Place to Code, es decir las 20 empresas que fueron mejor evaluadas por sus colaboradores.</p> <p dir="ltr">La lista está ordenada en base al resultado de la evaluación, siendo el número 1 la empresa que obtuvo la mejor evaluación.</p> <table> <colgroup> <col /> </colgroup> <tbody> <tr> <td> <ol> <li dir="ltr"> <p dir="ltr">Headspring</p> </li> <li dir="ltr"> <p dir="ltr">Grow IT</p> </li> <li dir="ltr"> <p dir="ltr">michelada.io</p> </li> <li dir="ltr"> <p dir="ltr">GIN Group Integra</p> </li> <li dir="ltr"> <p dir="ltr">Simpat</p> </li> <li dir="ltr"> <p dir="ltr">DigitalOnUs</p> </li> <li dir="ltr"> <p dir="ltr">OnceDev</p> </li> <li dir="ltr"> <p dir="ltr">TangoSource</p> </li> <li dir="ltr"> <p dir="ltr">Ordico</p> </li> <li dir="ltr"> <p dir="ltr">BBVA Bancomer</p> </li> <li dir="ltr"> <p dir="ltr">Nova Solutions</p> </li> <li dir="ltr"> <p dir="ltr">iTexico</p> </li> <li dir="ltr"> <p dir="ltr">Tacit Knowledge Guadalajara</p> </li> <li dir="ltr"> <p dir="ltr">Abraxas Ventures</p> </li> <li dir="ltr"> <p dir="ltr">Platzi</p> </li> <li dir="ltr"> <p dir="ltr">Scio Consulting</p> </li> <li dir="ltr"> <p dir="ltr">Svitla Systems</p> </li> <li dir="ltr"> <p dir="ltr">CONTPAQi</p> </li> <li dir="ltr"> <p dir="ltr">Intelimétrica</p> </li> <li dir="ltr"> <p dir="ltr">Experiencias Xcaret</p> </li> </ol> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p dir="ltr">Felicitamos a estas empresas que a través de su liderazgo y esfuerzo han logrado ser parte de este muy selecto grupo. En Software Guru estamos convencidos de que los profesionistas de software pueden encontrar “trabajos de ensueño” en nuestra región, y estas empresas son prueba de ello.</p> <p dir="ltr">Esperamos que el ejemplo que ponen estas organizaciones motive al resto de nuestra industria para seguir mejorando y que entre todos logremos atraer el talento que necesitamos, ya sea de otras profesiones, países, o jóvenes que están decidiendo qué estudiar.</p> <p dir="ltr">Te invitamos a conocer sobre estas y otras empresas que han demostrado ser Best Place to Code en <a href="https://bestplacetocode.com">https://bestplacetocode.com</a>. También tendrás oportunidad de conocerlas en persona en el “Best Place to Code showcase” que se realizará el 27 de febrero en Ciudad de México.</p> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Tue, 15 Jan 2019 21:56:49 +0000 Ivett Sanchez 8526 at https://sg.com.mx https://sg.com.mx/revista/58/las-mejores-empresas-para-trabajar-en-software-2018-2019#comments OpenMarket Considera su Presencia en Guadalajara como Clave de su Éxito https://sg.com.mx/revista/58/openmarket-considera-su-presencia-en-guadalajara-como-clave-de-su-exito <span class="field field--name-title field--type-string field--label-hidden">OpenMarket Considera su Presencia en Guadalajara como Clave de su Éxito</span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-01/publi-foto2.jpg" width="1600" height="900" alt="" loading="lazy" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/44582" lang="" about="/user/44582" typeof="schema:Person" property="schema:name" datatype="" class="username">Ivett Sanchez</a></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 01/15/2019 - 15:42</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/58" hreflang="zxx">SG #58</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Han pasado sólo dos años desde que OpenMarket abrió una oficina en Guadalajara Jalisco, México, y el equipo ya tiene mucho que celebrar. En sólo dos años, el personal creció hasta formar cuatro equipos de desarrollo, uno de soporte y varios roles técnicos más. La empresa tiene el plan de expandirse un 40% adicional el siguiente año.</p> <p>OpenMarket, que desarrolla soluciones de mensajería utilizando las tecnologías SMS, MMS y RCS para las empresas más importantes del mundo, planea en el corto plazo añadir muchos puestos más en su oficina de Guadalajara.</p> <p><meta charset="utf-8" /></p> <img alt="publi1" data-entity-type="file" data-entity-uuid="675a9ec7-e927-47f8-85a1-708723fe344c" height="325" src="/sites/default/files/inline-images/publi-foto1_0.jpg" width="487" class="align-center" loading="lazy" /><p dir="ltr"> </p> <p dir="ltr"><meta charset="utf-8" />"En el año 2016, cuando me pidieron que abriera una nueva oficina, me sentí muy emocionado por el reto,” comentó Jairo Narez, quien es gerente de desarrollo de software y líder del site en Guadalajara. “Las metas eran muy ambiciosas, pero el equipo global fue muy solidario y nos brindaron todo su apoyo. Personas de las diferentes oficinas en el mundo viajaron a México en varias ocasiones, para ayudar en todo lo necesario”.</p> <p dir="ltr">¿Cómo puede una compañía expandirse tan rápidamente? Sus ingenieros opinan que es por su ambiente tan favorable para un desarrollador. “Lo que me gusta es que soy dueño de todas mis aplicaciones,” comenta Ramón Obeso, quien es uno de los fundadores de la oficina y el primer desarrollador de software contratado en Guadalajara. “En OpenMarket no estamos atrapados en silos, en una tecnología en particular o en una sola forma de hacer las cosas. No estamos encadenados a un tipo de base de datos o framework, o lenguaje de programación. Aquí tenemos la libertad de utilizar lo que el caso de uso requiera. Eso me encanta, porque me ha forzado a aprender nuevas tecnologías, que de otra forma no conocería.”</p> <p dir="ltr"><meta charset="utf-8" /></p> <p dir="ltr">Una de las razones por la cual los proyectos en OpenMarket son tan interesantes, es porque muchos de los clientes que utilizan nuestra plataforma están en el top diez de las marcas más reconocidas a nivel mundial. Utilizando nuestra plataforma de mensajería, estas compañías envían más de tres mil millones de mensajes al mes a sus clientes en todo el mundo.</p> <p dir="ltr"><meta charset="utf-8" /></p> <p dir="ltr">“Aunque la mayoría de la gente en Guadalajara no ha escuchado acerca de OpenMarket, cuando les dices lo que hacemos y quiénes son nuestros clientes, se impresionan. Nuestro trabajo tiene un impacto real en la vida diaria de las personas, y es muy lindo sentirse parte de eso,” dijo Diana Contreras, desarrolladora de software senior.</p> <img alt="publi2" data-entity-type="file" data-entity-uuid="dcd516f1-7c50-4fb9-a3e5-1ec6238bc77f" height="315" src="/sites/default/files/inline-images/publi-foto2.jpg" width="560" class="align-center" loading="lazy" /><p dir="ltr"> </p> <p dir="ltr">OpenMarket es una empresa única en México, porque aprovecha todo el talento de los equipos de desarrollo ubicados en Guadalajara. “Nuestros equipos de ingeniería construyen sus productos y son dueños del proceso de desarrollo de software de principio a fin. Esto incluye arquitectura, diseño, desarrollo, pruebas, puesta en producción y soporte de los servicios por los que son responsables”, enfatizó Narez.</p> <p dir="ltr"><meta charset="utf-8" /></p> <p dir="ltr">Pero lo que mantiene a los ingenieros de OpenMarket tan felices, no son solo clientes fascinantes y proyectos interesantes. El tamaño de la oficina de Guadalajara, así como la cultura de la compañía, son también muy importantes. Narez piensa que en OpenMarket es muy fácil conocer a todos muy bien. “Operamos como un grupo muy unido. Realmente nos importa la gente con la que trabajamos.”</p> <p dir="ltr">OpenMarket le da mucho valor a un balance saludable entre la vida personal y profesional, y alenta la socialización de sus colaboradores sin importar en cuál de sus cinco oficinas en el mundo se encuentren. En la oficina de Guadalajara, por ejemplo, los últimos jueves de cada mes se organiza una salida en grupo ya sea a un pueblo mágico cercano, a escalar, al cine, a jugar juegos de mesa o a comer en el lugar de moda.</p> <p dir="ltr">La ubicación de OpenMarket en Guadalajara ayuda a que sea fácil pasar un rato divertido con el equipo. La empresa está ubicada en un edificio corporativo, en el corazón de Guadalajara y dentro de la afamada<a href="https://www.plazagaleriasguadalajara.com/"> Plaza Galerías</a>. A la hora de la comida, vamos a la plaza por comida, a hacer compras o al banco. “Es como si OpenMarket tuviera gimnasio, restaurantes y cine, porque todo está aquí,” expresó Contreras.</p> <p dir="ltr"><meta charset="utf-8" /></p> <img alt="publi3" data-entity-type="file" data-entity-uuid="e1591902-e340-488d-a974-a6fb3c9b9961" height="447" src="/sites/default/files/inline-images/publi-foto3.jpg" width="335" class="align-center" loading="lazy" /><p dir="ltr"> </p> <p dir="ltr">Otro beneficio de la compañía es su tamaño. OpenMarket es una empresa mediana, con 300 empleados en el mundo. Narez explica, “En algunos lugares, eres un número más. En otros, tienes que tener un ojo en tu trabajo y otro en las noticias, para ver si tu compañía logró asegurar la siguiente ronda de financiamiento. En OpenMarket, no tenemos ninguno de esos problemas. Tenemos lo mejor de los dos mundos.”</p> <p dir="ltr">OpenMarket debe gran parte de su estabilidad a su empresa matriz, Amdocs. Cotizando en bolsa como una de las más importantes empresas proveedoras de software y servicios en el sector de las telecomunicaciones y medios de comunicación, Amdocs tiene una fuerza laboral de más de 25,000 personas, y obtuvo ingresos por cerca de cuatro mil millones de dólares el año pasado. Debido al tamaño y madurez de Amdocs, los empleados de OpenMarket disfrutan de los recursos y beneficios que sólo una compañía grande y exitosa puede ofrecer, incluyendo un excelente seguro de gastos médicos, vales de despensa y restaurante, y presupuesto para viajes de negocios a otras oficinas de OpenMarket alrededor del mundo.</p> <p dir="ltr">La naturaleza global de la empresa, también es un gran punto a favor para los empleados. Además de estar en Guadalajara, OpenMarket tiene oficinas en Seattle, Detroit, Londres, Pune y Sídney. Los colaboradores de cada una de las oficinas de OpenMarket, asisten a conferencias, como por ejemplo, Amazon´s AWS re: Invent en Las Vegas, y también trabajan juntos a diario.</p> <p dir="ltr">Una cosa muy importante en todo OpenMarket es su compromiso con la diversidad. En Guadalajara, el equipo está haciendo muchas cosas para reclutar talento con diversidad e inclusión. Por ejemplo, se lanzan campañas en Glassdoor y LinkedIn con anuncios enfocados en atraer candidatos de diversos perfiles, y se organizan eventos para atraer becarios de universidades reconocidas por tener estudiantes de diferentes comunidades. La oficina de Guadalajara, tiene su propio grupo de Diversidad e Inclusión, que se organiza con escuelas para promover la misma. Hasta la fecha, estos esfuerzos han dado muchos frutos: el 24% del personal técnico en Guadalajara son ingenieras.</p> <p dir="ltr">Pero no todo son números. Una vez que un candidato es contratado, OpenMarket sabe que el esfuerzo real es hacer que el nuevo compañero se sienta incluido. “Trabajando en OpenMarket, nunca he sentido ninguna diferencia en cómo soy tratada,” comentó Contreras. “Me gusta que soy tratada como un individuo. Me gusta que siempre que hablo, sé que mis compañeros, hombres y mujeres, me escuchan.” Diana, quien ha estado en OpenMarket por dos años, fue promovida a una posición senior un año y medio después de haber entrado a la empresa.</p> <img alt="publi4" data-entity-type="file" data-entity-uuid="aed651e4-fc53-42fb-b970-961846c2318a" height="335" src="/sites/default/files/inline-images/publi-fotos4.jpg" width="502" class="align-center" loading="lazy" /><p dir="ltr"> </p> <p dir="ltr">Y al tiempo que OpenMarket mira hacia el 2019, Jairo Narez visualiza a la compañía seguir en su exitosa trayectoria, debido en gran parte a su cultura única. “En OpenMarket puedes ser auténtico. Para mí eso es muy valioso. Todos tenemos fuerzas y debilidades, y aquí no tienes que fingir ser alguien más. Los conflictos se resuelven entendiendo las diferentes perspectivas.” Elsa Sainz, Coordinadora de Atracción de Talento, está de acuerdo, y agrega, “En OpenMarket, eres parte de una gran familia. En vez de estar con colegas, estás con amigos – puedes contar con ellos para reír, para estar serio, y para dar y recibir ayuda.”</p> <p dir="ltr">¿Estás interesado en unirte a la familia OpenMarket? Ingresa a nuestro sitio web y revisa las posiciones que tienen abiertas. <a href="https://www.openmarket.com/company/careers/">https://www.openmarket.com/company/careers/</a></p> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Tue, 15 Jan 2019 21:42:15 +0000 Ivett Sanchez 8510 at https://sg.com.mx https://sg.com.mx/revista/58/openmarket-considera-su-presencia-en-guadalajara-como-clave-de-su-exito#comments El impacto de los lenguajes propietarios de propósito particular: Una visión panorámica https://sg.com.mx/revista/58/el-impacto-de-los-lenguajes-propietarios-de-proposito-particular-una-vision-panoramica <span class="field field--name-title field--type-string field--label-hidden">El impacto de los lenguajes propietarios de propósito particular: Una visión panorámica </span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-01/sg58-prueba13.png" width="452" height="131" alt="" loading="lazy" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/1" lang="" about="/user/1" typeof="schema:Person" property="schema:name" datatype="" class="username">sg</a></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 01/15/2019 - 14:51</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/58" hreflang="zxx">SG #58</a></li> </ul> </div> <div class="field field--name-field-seccion field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix"> <ul class='links field__items'> <li><a href="/secci%C3%B3n-revista/prueba-software" hreflang="und">Prueba de Software</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/buzz/autores/luis-vinicio-leon-carrillo" hreflang="und">Luis Vinicio León Carrillo</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Suele ser difícil percibir el impacto que tienen los lenguajes en nuestra civilización, pues es algo que vivimos cotidianamente. En el ámbito de los lenguajes naturales, Koen DePryck (en su libro sobre “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">The Ontology of Language</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">”) nos dice:</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-right: 30.9pt;text-indent: -21.3pt;text-align: justify;padding:0pt 0pt 0pt 21.3pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">“Our language has its historical roots in the world, so that the history of the world is the history of our language, and so that </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">the world is language</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">.”</span></b><br /> &nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-right: 2.55pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Ya en nuestro campo, el reconocido </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">computer scientist</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> C.A.R. Hoare comentó en algún momento, refiriéndose a su método de ordenamiento </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Quick-Sort</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> y después de tomar un curso de Algol-60 (primer lenguaje en ofrecer la posibilidad de escribir subrutinas recursivas):</span></b><br /> &nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-right: 30.9pt;text-indent: -21.3pt;text-align: justify;padding:0pt 0pt 0pt 21.3pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">“It was there that I first learned about recursive procedures and saw how to program the sorting method which I had earlier found such </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">difficulty in explaining</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">.”</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-right: 2.55pt;text-align: justify;">&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-right: 2.55pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Los lenguajes nos proveen de muchas estructuras que facilitan que hagamos eficientemente muchas cosas, pero que al mismo tiempo pueden dificultar ver otras que pudieran ser igualmente importantes. Las estructuras que tenemos a nuestra disposición en un lenguaje (sea artificial o natural) pueden imponer límites a lo que podemos expresar (sea programar o pensar). </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-right: 2.55pt;text-align: justify;"><br /> <b style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">En los últimos números de esta columna hemos abordado los lenguajes formales desde distintos puntos de vista, buscando generar el contexto para mostrar la utilidad y el impacto de contar con lenguajes propietarios en nuestras organizaciones para documentar, especificar, programar, o probar productos de software. En el caso de la programación, el contar con un lenguaje propietario de más alto nivel que el que usa actualmente una organización permitiría destinar más tiempo al diseño del producto que a la escritura del programa, lo que facilitaría el incremento de la calidad; al no ser necesario atender tantos detalles, habría menos probabilidad de introducir errores, lo cual también facilitaría el incremento de la calidad; y al ser estos lenguajes más expresivos, se podría entregar el producto más rápidamente, facilitando el incremento de la productividad. </span></b></p> <p><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">En este número abordaremos un ejemplo con el que buscaremos evidenciar los beneficios anteriores. Para ofrecer aquí la idea adecuadamente, permítannos primero retomar los puntos más relevantes que expusimos en otros números y que contextualizan la presentación del ejemplo.</span></b></p> <h3 dir="ltr">1. Lenguajes - Patrones</h3> <p dir="ltr"><em>Comenzamos abordando el concepto “lenguaje” como algo muy general, en términos de “patrones” en SG#48 (“el número 48 de la revista”):</em></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">En la figura de abajo, consideren que la sustitución de lo que está a la izquierda del símbolo “</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">⇒</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” por lo que está a su derecha ocurre siempre “en paralelo”; es decir: que </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">todas</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> las apariciones de lo que está a la izquierda de “</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">⇒</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” deben sustituirse por lo que está a la derecha </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">simultáneamente</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">. </span></b></p> <div dir="ltr" style="margin-left:29.65pt;"> <table style="border:none;border-collapse:collapse"> <colgroup> <col width="319" /> <col width="85" /> </colgroup> <tbody> <tr style="height:0pt"> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp;</td> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp;</td> </tr> <tr style="height:0pt"> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-indent: -177pt;text-align: right;padding:0pt 0pt 0pt 177pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="33" src="https://lh5.googleusercontent.com/Yf2WNDvSQo8o2sc4hkDJJikfsUDXeyy8-3TZDdaZbI56-XfeQVAlNs24_L4ra-z6QX-6dNKIysOCveH4y3eKjSoSYVVOEVgkmqaZ0OZC4jvp-jxs3oDL3viGr1nStx8OvUAuR4dmMXP6TjmJxw" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="68" /></span></b></p> </td> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp;</td> </tr> <tr style="height:0pt"> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp;</td> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp;</td> </tr> </tbody> </table> </div> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Si aplicamos 3 veces esa regla/patrón (en paralelo) tenemos:</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-indent: -106.2pt;padding:0pt 0pt 0pt 106.2pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="81" src="https://lh5.googleusercontent.com/myKfXmqepwkopn3UFdGmkL4M91Ke9ZQgdTLxHIjRrVkHwcLo5gSE-rqiuTnXSgKlwR6W_20TfIShcS9a2Za6UUy4_oDL5XVoE4Wrm3_FhGNzpPt23MbXXIfAiN-eyrXEgX-Cde4Fsgsi_6G2iQ" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="203" /></span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Como pueden observar, este pequeño patrón, descrito con esa sencilla y única regla, parece describir el crecimiento de una planta (solo en 2 dimensiones). Lenguajes en los que las reglas se aplican en paralelo, se han utilizado para describir fenómenos de este tipo, y han dado lugar a toda una jerarquía de lenguajes conocida como </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Sistemas Lindenmayer</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">L-Systems</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">), los cuales a su vez tienen relación con los fractales (“el todo contenido en cada parte”).</span></b><br /> &nbsp;</p> <h3 dir="ltr">2. Lenguajes formales</h3> <p dir="ltr"><em>Luego, en SG#50, abordamos “lenguaje” desde una perspectiva más bien matemática (algebraica):</em></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Partimos de la definición del concepto de </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">alfabeto</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> como un conjunto finito de caracteres </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">= { b</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">1 </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, b</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">2 &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, …, b</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">m </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">}</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> , y dijimos que &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;tiene una </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">cardinalidad</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (cantidad de elementos) igual a </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">m </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, lo cual escribimos como </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">|</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B|</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> = m</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> .</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;">&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Definimos la operación de </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">concatenación</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> “ </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">⋅</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” &nbsp;sobre caracteres (lo que nos permite construir </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">b</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">5 </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">⋅ b</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">4 </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">⋅ b</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">8 </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">⋅ b</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">8 </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) y sobre conjuntos de caracteres (lo que nos permite construir </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B ⋅ A</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">⋅ D </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">).</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;">&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Luego definimos la </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">exponenciación </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">de la concatenación </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">x</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;"> &nbsp;&nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">sobre un alfabeto </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> como la aplicación de la concatenación </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">x-1</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> veces sobre el alfabeto ( </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B ⋅ B⋅ … ⋅ B</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> , donde</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> B </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;aparece </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">x </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">≥ 0</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;veces).</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;">&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Después definimos la </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">cerradura de Kleene</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">*</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;como la unión de todas las exponenciaciones sobre el alfabeto </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;(</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">*</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">= &nbsp;</span><span style="font-size:12pt;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">U</span><span style="font-size:7.199999999999998pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">∞</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">i=0</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;B</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">i</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> ).</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Finalmente definimos que un </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">lenguaje formal</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> sobre un alfabeto </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">es cualquier </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">subconjunto de </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">*</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">. &nbsp;&nbsp;Definimos la </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">cerradura positiva</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">+</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;como </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">+</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">= B</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">⋅ </span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">&nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">*</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;&nbsp;&nbsp;(</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">+</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> contiene cadenas con al menos un caracter).</span></b><br /> &nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-right: 2.55pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Explicitamos que, dado un código ASCII extendido que aquí llamaremos AE, que extienda el usado hoy en día con </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">cualquier</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> cantidad (finita) de caracteres, podemos ver al lenguaje Java como el subconjunto de cadenas de cualquier longitud escritas utilizando ese AE que son aceptadas como “correctas” por el compilador de Java. Lo mismo es cierto si sustituimos “Java” por el nombre de cualquier lenguaje de computación. </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-right: 2.55pt;text-align: justify;">&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-right: 2.55pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">En AE</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">*</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> están incluidos no solo </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">todos</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> los lenguajes de programación existentes y por existir, sino también todos los compiladores (escritos y por escribirse) de todos esos lenguajes. De hecho, en AE</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">*</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> se encuentran </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">todas</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> las cadenas de caracteres que podamos escribir en esa extensión del ASCII, incluyendo los programas “incorrectos” en todos los lenguajes.</span></b><br /> &nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-right: 2.55pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Dijimos que dado un conjunto </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">A</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> que tiene </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">i </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">elementos, la </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">cantidad de subconjuntos</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> que pueden formarse sobre </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">A</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es igual a </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">2</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">i </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">. Dijimos también que </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">* </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, la </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Cerradura de Kleene</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> sobre el alfabeto</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> B</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, es un conjunto infinito pero </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">contable</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, porque tiene la misma cardinalidad que el conjunto de los números naturales </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">N</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">. &nbsp;Esto &nbsp;implica en particular que, así como ocurre en el conjunto de los números naturales </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">N</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, dada una de las cadenas de </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">*</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> , siempre podemos definir cuál es la que le sigue y listar sus elementos en orden sin saltarnos alguno (en </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">N </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, dado un número natural </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">y</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, sabemos que el que le sigue es </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">y+1</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">). &nbsp;</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-right: 2.55pt;text-align: justify;">&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-right: 2.55pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">De lo anterior se sigue que la cantidad de lenguajes sobre </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">cualquier</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> alfabeto </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es igual a </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">2</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">N </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">… El asunto es que </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">2</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">N</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es una cardinalidad estrictamente mayor que la de </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">N</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (siguiendo el Teorema de Cantor), lo que lo vuelve un conjunto </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">no-contable</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (aquellos conjuntos en los que, dado un elemento </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">x</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, no es posible decir cuál elemento es el que sigue, como en el caso de los números reales </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">R</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">: si tenemos el número 0.0004 no podemos decir que el que le sigue es 0.0005; tampoco que es 0.00041; en realidad, entre </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">cualesquiera</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> 2 números reales hay una cantidad infinita de números reales).</span></b><br /> &nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-right: 2.55pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Una consecuencia importantísima de lo anterior es que la cantidad de lenguajes (=</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">2</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">N</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) que pueden definirse sobre un alfabeto es estrictamente mayor que la cantidad de cadenas (=</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">N</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) que pueden construirse sobre ese alfabeto, así es que: </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">independientemente del tamaño del alfabeto, siempre tendremos lenguajes sobre ese alfabeto para los que no podemos definir un compilador, esto es, siempre habrá lenguajes que no podremos procesar</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">.</span></b></p> <p>&nbsp;</p> <h3>3. Gramáticas</h3> <p dir="ltr"><em>En SG#51, revisamos “lenguaje” desde un punto de vista un poco más “computacional”, pero aún “declarativo”, utilizando reglas (que pueden verse como una abstracción del concepto de patrón):</em></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;">&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Dijimos que podemos definir lenguajes utilizando </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">gramáticas</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, las cuales son cuátruplas de la forma:</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">〈 </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">T, N, S</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">0 </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, R</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> 〉</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;&nbsp;&nbsp;donde </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-left: 14.150000000000006pt;margin-right: 16.75pt;text-indent: -42.55pt;text-align: justify;padding:0pt 0pt 0pt 42.55pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">T</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">es el conjunto de los símbolos terminales del lenguaje (en adelante “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Terminales</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">”); son finalmente los elementos constituyentes de las secuencias de símbolos de una cadena del lenguaje;</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-left: 14.150000000000006pt;margin-right: 16.75pt;text-indent: -42.55pt;text-align: justify;padding:0pt 0pt 0pt 42.55pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">λ</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">es con lo que designamos la “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">cadena nula</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” (aquella que no contiene símbolos); </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-left: 14.150000000000006pt;margin-right: 16.75pt;text-indent: -42.55pt;text-align: justify;padding:0pt 0pt 0pt 42.55pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">N</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">es el conjunto de los símbolos no-terminales del lenguaje (en adelante “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">no-Terminales</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">”); no constituyen necesariamente cadenas finales, pues son definidos en términos de una combinación de Terminales y no-Terminales. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-left: 56.7pt;margin-right: 16.75pt;text-indent: -42.55pt;text-align: justify;padding:0pt 0pt 0pt 42.55pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Nota:</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> En estas definiciones, debe cumplirse que </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">T ∩ N = {} </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">;</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-left: 14.150000000000006pt;margin-right: 16.75pt;text-indent: -42.55pt;text-align: justify;padding:0pt 0pt 0pt 42.55pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">R</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">es el subconjunto del producto cartesiano &nbsp;(</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">T ∪ N</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">)</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">*</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">×</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;(</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">T ∪ N</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">)</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">*</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;que define la relación matemática que denota las reglas de reescritura del lenguaje (en adelante “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Reglas</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">”);</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-left: 14.150000000000006pt;margin-right: 16.75pt;text-indent: -42.55pt;text-align: justify;padding:0pt 0pt 0pt 42.55pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">S</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">0</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">es el elemento distintivo de los no-Terminales llamado “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Símbolo-inicial</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">”, que es con el que inicia el “procesamiento” de </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">R </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">.</span></b></p> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Escribimos las Reglas utilizando el “meta-lenguaje” (llamado así porque es un lenguaje con el cual definimos lenguajes) llamado BNF (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">ackus-</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">N</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">aur </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">F</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">orm). En él, para cada regla se coloca el primer elemento del producto cartesiano, seguido del símbolo “</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">→</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” seguido del segundo elemento del producto cartesiano.</span></b></p> <p dir="ltr" style="line-height:1.295;margin-top:0pt;margin-bottom:8pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span></b></p> <h3 dir="ltr">4. Jerarquías de Lenguajes</h3> <p dir="ltr"><em>Con la definición anterior, en SG#51 y SG#52 revisamos una Jerarquía de Lenguajes Formales (que dijimos, incluye la Jerarquía de Chomsky):</em></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">La siguiente categorización de lenguajes se hace considerando la complejidad de la estructura de las reglas en la </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">R</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> particular que los define (por cuestiones de espacio, obviaremos algunos detalles):</span></b></p> <ol dir="ltr"> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Llamamos </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">gramáticas regulares</span><span style="font-size:10pt;font-family:Calibri;color:#ff0000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a aquellas cuyas reglas en &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">R</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;sean de la forma &nbsp;&nbsp;&nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">A→ B d </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;| </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">d </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;&nbsp;&nbsp;(o menos compleja); y llamamos </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">lenguajes regulares</span><span style="font-size:10pt;font-family:Calibri;color:#ff0000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">(o de </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Tipo 3</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, o </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lgs</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">3</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> de manera corta) a aquellos que puedan definirse utilizando gramáticas regulares. </span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Llamamos </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">gramáticas libres de contexto</span><span style="font-size:10pt;font-family:Calibri;color:#ff0000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a aquellas cuyas reglas en &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">R</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;sean de la forma &nbsp;&nbsp;&nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">A→ </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">α</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;(o menos compleja), y </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">lenguajes libres de contexto </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">(o de </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Tipo 2</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, o </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lgs</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">2</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">)</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> a aquellos que puedan definirse utilizando gramáticas libres de contexto.</span></b> <b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Dentro de estos lenguajes existen varias divisiones. Una de las más relevantes es la que diferencia entre los </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">lenguajes determinísticos</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> y los </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">lenguajes no-determinísticos</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (un ejemplo de estos últimos es &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">n</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> b</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">n </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">∪ </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">n</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> b</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">2n &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, que como podrán intuir, para procesarlo es necesario que el compilador asociado realice </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">backtracking</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">).</span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Llamamos </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">gramáticas sensibles al contexto</span><span style="font-size:10pt;font-family:Calibri;color:#ff0000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a aquellas cuyas reglas en &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">R</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;sean de la forma &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">β</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">1</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">A </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">β</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">2</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">→ </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">β</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">1</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">α</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">β</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">2</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">(o menos compleja), donde </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">α</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">≠</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">λ</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> ; y </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">lenguajes sensibles al contexto </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">(o de </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Tipo 1</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, o </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lgs</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">1</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">)</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> a aquellos que puedan definirse utilizando gramáticas sensibles al contexto. Decimos que </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">β</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">1</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> y &nbsp;</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">β</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">2</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> representan el contexto en el que </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">A </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;se puede transformar en &nbsp;</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">α</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> .</span></b> <b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Ahora bien, como </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">α</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">≠</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">λ</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> , entonces la suma de la cantidad de Terminales y de no-Terminales en </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">α</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es mayor o igual a uno; a esta cantidad la llamaremos la </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">longitud</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> de </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">α</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> y la denotamos con|</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">α</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">|. Ahora podemos generar una definición equivalente pero menos restrictiva (aunque no hace evidente el atributo “sensible al contexto”): &nbsp;</span></b><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Llamamos también </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">gramáticas sensibles al contexto</span><span style="font-size:10pt;font-family:Calibri;color:#ff0000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a aquellas cuyas reglas en &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">R</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;sean de la forma &nbsp;&nbsp;&nbsp;</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">θ</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">→ </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">α</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">(o menos compleja), donde </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">θ</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">∈</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">T ∪ N</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">)</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">*</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> , &nbsp;</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">θ</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">≠</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">λ</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;y |</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">θ</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">| </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">≤</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> |</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">α</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">| ; y llamamos </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">lenguajes sensibles al contexto </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a aquellos que puedan definirse utilizando este tipo de gramáticas.</span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Llamamos </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">gramáticas estructuradas por frases </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a aquellas cuyas reglas en &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">R</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;sean de la forma &nbsp;</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">θ</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">→ </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">α</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">(o menos compleja), donde </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">θ</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">∈</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">T ∪ N</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">)</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">*</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;y </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">θ</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">≠</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">λ</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> ; y llamamos </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">lenguajes estructurados por frases </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">(o </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Tipo 0</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, o </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lgs</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">0</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">)</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> a aquellos que puedan definirse utilizando gramáticas estructuradas por frases.</span></b> <b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Dentro de estos lenguajes se encuentra la importantísima clase los </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lenguajes Decidibles</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (o </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Recursivos</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">,</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">o </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lgs</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">dec</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">), que son</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;aquellos para los que es posible construir programas (por ejemplo compiladores) que siempre terminan y anuncian si la cadena es elemento del lenguaje o si no lo es (aunque para ello requieran enormes cantidades de tiempo y/o memoria). Las reglas con las que se definen tienen la misma forma que los </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lgs</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">0</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">. &nbsp;&nbsp;Podemos ver a los </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lgs</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">0</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> como </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">lenguajes semi-decidibles</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">: los programas que los procesan (por ejemplo compiladores) pueden determinar cuando las cadenas sí son elementos del lenguaje, pero cuando no es así continúan su procesamiento indefinidamente (“se ciclan”).</span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Llamamos </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lenguajes Generales</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (o </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lgs</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">gral</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">)</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> a aquellos que incluyen a todos los anteriores y a los que no son susceptibles de ser definidos mediante reglas.</span></b></li> </ol> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><br /> <b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">La Jerarquía muestra un crecimiento significativo en la complejidad de la estructura de las reglas (o dicho de otra manera, una disminución significativa en las restricciones sobre esa estructura). En ella ocurre (obviando algunas precisiones) que &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lgs</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">3</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">⊂≠ </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lgs</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">2</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">⊂≠ </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lgs</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">1</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">⊂≠ </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lgs</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">dec</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">⊂≠ </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lgs</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">0 </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">⊂≠ </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lgs</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">grals</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">.</span></b></p> <p dir="ltr"><em>También revisamos los siguientes lenguajes “prototípicos” expresados en forma algebraica: </em></p> <ul dir="ltr"> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -18pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">L</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">1</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> : &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> m</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> b</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> n</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> c</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> k</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">d</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> i</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">para </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">m, n, i, k </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">≥</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;0 e independientes entre sí:</span></b></li> </ul> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-indent: -17.4pt;text-align: justify;padding:0pt 0pt 0pt 17.4pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Se trata de una Gramática Regular. Este tipo de gramáticas tienen el mismo poder expresivo para definir lenguajes que las conocidas </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">expresiones regulares</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, y son suficientes para especificar los “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">scanners</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” de los compiladores, los cuales se encargan del análisis lexicográfico.</span></b></p> <ul dir="ltr"> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -18pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">L</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">2</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> : &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> m</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> b</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> i</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> c</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> i</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> d</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> m</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">para </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">m, i </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">≥</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">0 &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">que aparecen por pares y están “anidadas”:</span></b></li> </ul> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-indent: -17.4pt;text-align: justify;padding:0pt 0pt 0pt 17.4pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Este es un ejemplo “clásico” de una Gramática Libre de Contexto.</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-indent: -17.4pt;text-align: justify;padding:0pt 0pt 0pt 17.4pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Este tipo de gramáticas tienen el mismo poder expresivo para definir lenguajes que los conocidos </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">grafos de sintaxis</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, y son suficientes para especificar los “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parsers</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” de los compiladores, los cuales se encargan del análisis sintáctico.</span></b></p> <ul dir="ltr"> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -18pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">L</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">3</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> : &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> m</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> b</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> i</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> c</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> m</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> d</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> i</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">para </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">m, i </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">≥</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">0</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> , que aparecen por pares pero no están “anidadas”:</span></b></li> </ul> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-indent: -17.4pt;text-align: justify;padding:0pt 0pt 0pt 17.4pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Con este tipo de lenguajes se podrían especificar (al menos buena parte de) los Sistemas de Tipos de los lenguajes de programación, los cuales definen sus aspectos semánticos (de significado, como los del paso de parámetros que mencionamos, o la equivalencia de tipos). Sin embargo, dado que el procesamiento de estos lenguajes es más complejo y costoso en tiempo que el de las Libres de Contexto, y que la mayoría de los constructos de los lenguajes de computación son de este último tipo, los aspectos semánticos se suelen abordar apoyándose en gramáticas Libres de Contexto y en una </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Tabla de Identificadores </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">en la cual suele almacenarse, entre otras cosas, el nombre, la clase (si es variable, procedimiento, función, etc.), el tipo (v.gr. integer, string, </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">〈</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">char, real</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">〉</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">→</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> boolean), y la dirección de cada identificador. </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-indent: -17.4pt;text-align: justify;padding:0pt 0pt 0pt 17.4pt;">&nbsp;</p> <p dir="ltr"><em>Después, en SG#53 mencionamos que existen también otras jerarquías de lenguajes, y revisamos la de las Left-Assotiative-Grammars:</em></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">En nuestra primera columna sobre el tema del desarrollo de lenguajes propietarios mencionamos un enfoque sobre lenguajes formales llamado Sistemas Lindenmayer (proveniente de la Biología), dado nuestro interés en encontrar mecanismos para eficientar el desarrollo de software, en números posteriores estudiamos los lenguajes formales utilizando principalmente los trabajos sobre gramáticas del lingüista Noam Chomsky, las cuales se conocen como Gramáticas Estructuradas por Frase, y en un número reciente presentamos una jerarquía de las mismas. Se presume que, en esa jerarquía, los lenguajes naturales se encuentran en la clase de los Lenguajes Sensibles al Contexto.</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">En realidad, las Gramáticas Estructuradas por Frase son un tipo particular de las llamadas </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Gramáticas Generativas</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, que son sistemas (“recursivos”) de reglas provenientes de trabajos en Lógica Matemática.</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Algunos de los enfoques más relevantes que han sido utilizados para abordar las Gramáticas Generativas son:</span></b></p> <ol style="margin-top:0pt;margin-bottom:0pt;"> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Gramáticas Categóricas</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (“</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C-Grammars</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">”): desarrolladas inicialmente en 1929 por el polaco Lesniesvsky, y aplicadas al los natural lenguajes por primera vez por Bar-Hillel en 1953. </span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Gramáticas Estructuradas por Frase</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">PS-Grammars</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">): basadas en los “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Rewrite Systems</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” de Emil Post desarrollados en 1936, aplicadas a los lenguajes naturales por primera vez por Chomsky en 1957.</span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Gramáticas Asociativas por la Izquierda</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Left-Assotiative-Grammars</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">): desarrolladas en 1985 por Roland Hausser para procesar lenguajes naturales.</span></b></li> </ol> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><br /> <b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Los dos primeros enfoques presentan el problema de que los recursos requeridos (tiempo y/o memoria) para hacer el procesamiento de lenguajes naturales son demasiado grandes como para llevarlos a la práctica. El tercero muestra algunas bondades al respecto.</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Formalmente, una </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Gramática-LA</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (del Inglés </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">L</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">eft-</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">A</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">ssociative </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">G</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">rammar</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">LAG</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) es una séptupla de la forma:</span></b><br /> &nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">〈 </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">W, C, LX, CO, RP, S</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">I </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, S</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">F</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> 〉</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;&nbsp;&nbsp;donde </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span></b><br /> &nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-left: 14.150000000000006pt;margin-right: 16.75pt;text-indent: -42.55pt;text-align: justify;padding:0pt 0pt 0pt 42.55pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">W</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">es un conjunto finito de las llamadas </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Word surfaces</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> ;</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-left: 14.150000000000006pt;margin-right: 16.75pt;text-indent: -42.55pt;text-align: justify;padding:0pt 0pt 0pt 42.55pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">es un conjunto finito de </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Category segments</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> ;</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-left: 14.150000000000006pt;margin-right: 16.75pt;text-indent: -42.55pt;text-align: justify;padding:0pt 0pt 0pt 42.55pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">L</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">⊃</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;( </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">W</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">×</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">+ </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) es un conjunto finito conteniendo el </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Léxico</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> ;</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-left: 14.150000000000006pt;margin-right: 16.75pt;text-indent: -42.55pt;text-align: justify;padding:0pt 0pt 0pt 42.55pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">CO</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">= ( </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">co</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">1</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">, …, </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">co</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">n-1 </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) es una secuencia finita de funciones recursivas totales (entiéndase “programas”) de (</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">* </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">×</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">+</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) a (</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">* </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">∪</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">{</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">⊥</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">}</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) &nbsp;llamadas </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Categorial Operations</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> ;</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-left: 14.150000000000006pt;margin-right: 16.75pt;text-indent: -42.55pt;text-align: justify;padding:0pt 0pt 0pt 42.55pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">RP</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">= ( </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">rp</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">1</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">, …, </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">rp</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">n-1 </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) es una secuencia finita ( igualmente larga que </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">CO</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> ) de subconjuntos de </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">n</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">( </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">donde </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">n</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> = </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">{</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> i | 0 </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">≤ </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">i </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&lt; </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">n</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">} ) </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;llamada </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Rule Packages</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> ;</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-left: 14.150000000000006pt;margin-right: 16.75pt;text-indent: -42.55pt;text-align: justify;padding:0pt 0pt 0pt 42.55pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">S</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">I</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">= { (</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> c</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">s1</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;&nbsp;rp</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">s1 </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) … ( </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">c</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">sk </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;&nbsp;rp</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">sk </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) } es un conjunto finito de </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">eStados Iniciales</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, donde cada </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">c</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">∈</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">+</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> y cada </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">rp</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es un subconjunto de </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">n</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> llamado </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">paquete de reglas de inicio</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">;</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-left: 14.150000000000006pt;margin-right: 16.75pt;text-indent: -42.55pt;text-align: justify;padding:0pt 0pt 0pt 42.55pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">S</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">F</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">= { (</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> c</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">f1</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;&nbsp;rp</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">f1 </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) … ( </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">c</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">fk </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;&nbsp;rp</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">fk </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) } es un conjunto finito de </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">eStados Finales</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> , donde cada </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">c</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">∈</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">*</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> y cada </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">rp </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">∈</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">RP</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> .</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><br /> <b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Así como con las Gramáticas Estructuradas por Frase de Chomsky que estudiamos, &nbsp;en el conjunto de lenguajes generados por </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Gramáticas-LA</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> también tenemos subclases:</span></b></p> <ul style="margin-top:0pt;margin-bottom:0pt;"> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Las</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> Gramáticas-LA</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">generales </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">(</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">A</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">llgemeine (general en alemán)</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">), o </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">A-LAGs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, corresponden a la definición de arriba.</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Las</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> Gramáticas-LA</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">limitadas</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">ounded</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">linealmente</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, o </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B-LAGs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, son la subclase de las A-LAGs en las cuales la longitud de las categorías está limitada linealmente con respecto a la longitud de la cadena de entrada.</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Las</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> Gramáticas-LA limitadas por una constante</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">onstant</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">), o </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C-LAGs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, son la subclase de las B-LAGs en las cuales la cantidad de cálculos requerida por operaciones categóricas individuales está limitada por una constante.</span></b></li> </ul> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-indent: -36pt;text-align: justify;padding:0pt 0pt 0pt 36pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Dentro de estas C-LAGs tenemos las subclases de </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C3-LAGs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> , </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C2-LAGs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> , y</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> C1-LAGs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> .</span></b><br /> &nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">La siguiente es la relación de las LAGs con la Jerarquía de Chomsky (incluimos algunos aspectos de rendimiento, que eventualmente abordaremos en números posteriores).</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El conjunto de </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Gramáticas-LA</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">… </span></b></p> <ul style="margin-top:0pt;margin-bottom:0pt;"> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -18pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">generales</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> o </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">A-LAGs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, aceptan y generan todos los Lenguajes Recursivos (o “Decidibles”), algo relevante, pues como vimos en un número anterior, en la Jerarquía de Chomsky no había un tipo de gramática específica que definiera exactamente este tipo de lenguajes.</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -18pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">bounded</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> o </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">B-LAGs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, aceptan y generan todos los Lenguajes Sensibles al Contexto (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">LSC</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">).</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -18pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">constant</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> o </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C-LAGs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, constan de 3 subclases: </span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C3-LAGs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> contiene los Lenguajes Libres de Contexto (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">LLC</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) más complejos y algunos LSC que son “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">NP-Complete</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” (la clase de problemas para los cuales no se han descubierto algoritmos eficientes que los resuelvan, y se piensan que no existen). Para procesar estos lenguajes se requiere tanto tiempo que hacerlo se vuelve prohibitivo en la práctica (técnicamente: requieren “tiempo exponencial”, lo que significa que pueden procesarse en un tiempo expresado como una base elevada a un exponente el cual está en función de la cantidad de datos de entrada).</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C2-LAGs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> contiene varios LLC “no-deterministas” (su procesamiento implica </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">backtracking</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) y varios LSC simples. Para procesarlos se requiere tiempo polinomial. </span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C1-LAGs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> contiene todos los LLC “deterministas” (no requieren </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">backtracking</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> para procesarlos) y varios LSC simples. Su procesamiento solo requiere tiempo lineal, lo que los vuelve muy útiles en la práctica. </span></b></li> </ul> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><br /> <b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Dijimos que se piensa que en esta jerarquía, los lenguajes naturales están dentro de la clase C1-LAG, lo cual significaría que su procesamiento sí puede realizarse en la práctica, aún con altos volúmenes de datos de entrada.</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;">&nbsp;</p> <h3>5. Semántica formal</h3> <p dir="ltr"><em>Todo el análisis anterior estuvo más bien orientado a la Sintaxis de lenguajes formales, pero en SG#56 también abordamos el tema de la Semántica de los lenguajes formales:</em></p> <p dir="ltr"><b style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">La sintaxis de un lenguaje –que se refiere a su </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">estructura</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">– es un aspecto muy importante del mismo y se utiliza ampliamente en el desarrollo de compiladores. </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">La “Semántica Formal” –que se refiere al </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">significado</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> de un lenguaje (aunque hay quien dice que “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Semantics is what we have in our minds; when one writes it down, it is not semantics any more.</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">”)– es muy importante también porque agrega precisión a la definición del lenguaje, pero actualmente no es tan común que se utilice en la construcción de compiladores (lo cual puede conducir a que v.gr. un programa dado a 2 compiladores diferentes para el mismo lenguaje tenga comportamientos distintos). </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">La </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Semántica</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> define el significado de un lenguaje a partir de los constructos del mismo, y con ello también el de los programas escritos en él. Existen varios enfoques para hacerlo; entre los más importantes se encuentran:</span></b></p> <ul dir="ltr"> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 4pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Operacional</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">: se especifica la semántica proporcionando (el código fuente de) un intérprete que define el comportamiento de los programas de ese lenguaje. Este enfoque, al ser tan operativo, no permite razonar sobre el lenguaje (mediante mecanismos lógico-matemáticos).</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Axiomático</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">: la semántica se especifica definiendo una “teoría matemática” para el lenguaje con la cual se puedan probar propiedades de programas escritos en ese lenguaje. Más que en lo que </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">significa</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> el lenguaje, el énfasis está en lo que puede probarse acerca de él. </span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Denotacional</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">: se especifica la semántica asociando a cada constructo del lenguaje un conjunto de funciones matemáticas que definen los significados denotando conjuntos. La semántica está dada en términos de conjuntos, funciones, relaciones, tuplas, predicados, y operaciones sobre estos elementos. Este enfoque tiene un nivel de abstracción aún mayor al del enfoque Axiomático.</span></b></li> </ul> <h3 dir="ltr">6. Máquinas Abstractas y Lenguajes</h3> <p dir="ltr"><em>En SG#54, tomamos un punto de vista muy procedural y revisamos el concepto “lenguaje” a la luz de las llamadas Máquinas con (conjuntos de) Estados Finitos (o Finite States Machines), MEFs, que pueden procesarlos: </em></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Las MEFs que presentamos tienen en común que: </span></b></p> <ul dir="ltr"> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">están constituidas por un conjunto finito de estados (</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">S</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) en los que la MEF puede encontrarse cuando procesa la cadena de entrada; hay un estado inicial (</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">ι</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) en que la MEF comienza su procesamiento y un estado (</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">h</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) (o más (</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">F</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">), dependiendo del tipo de MEF) en el (los) que puede terminarlo;</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">los símbolos que conforman la cadena de entrada son elementos de un conjunto finito (el “Alfabeto” </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">A</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">); </span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">las operaciones de la MEF se definen mediante una relación (en el sentido matemático) de transición </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">ρ</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;, que toma el estado en el que se encuentra la MEF en ese momento y el símbolo actual de la cadena de entrada (y, como veremos, eventualmente otras cosas, dependiendo del tipo de MEF), y regresa el estado al que la MEF debe moverse (y eventualmente otras cosas, como veremos); si la relación de transición </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">ρ </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;es una función (en el sentido matemático), entonces se le denota con </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">δ</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;y se dice que la </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">MEF </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">es</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> determinística</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, en caso contrario se que la </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">MEF </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">es</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> no-determinística</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">.</span></b></li> </ul> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Vimos MEFs particulares:</span></b><br /> &nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Los </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Autómatas Finitos (AFs)</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (ó </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Finite Automata</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) se definen como quíntuples de la forma &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size:11pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">AF </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">= </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">〈</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">S,ι, F, A, ρ </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">〉</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">&nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">. Pueden procesar los Lenguajes Regulares (como &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">m</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> b</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">n</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> e</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">k</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">d</span><span style="font-size:1.3499999999999999pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">&nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">para </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">m, n, k, i </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;</span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">≥</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">1</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> e independientes entre sí). </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><br /> <b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Los </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Autómatas de Pila (APs)</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (ó </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Push Down Automata</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) se definen como séxtuples de la forma &nbsp;&nbsp;&nbsp;</span><span style="font-size:11pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">AP </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">= </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">〈</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">S,ι, F, A, Σ, ρ </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">〉</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, &nbsp;&nbsp;&nbsp;</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">en los cuales &nbsp;&nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Σ &nbsp;&nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">es el alfabeto de la pila. &nbsp;Pueden procesar los Lenguajes Libres de Contexto (como &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">i</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> b</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">n</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> e</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">n</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">d</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> i</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">para </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">n, i</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">≥</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">1</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> ).</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><br /> <b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Las </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Máquinas de Turing</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">MTs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) (ó </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Turing Machines</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) se definen como séxtuples de la forma &nbsp;&nbsp;&nbsp;</span><span style="font-size:11pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">MT </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">= </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">〈</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">S,ι, h, A, Π, ρ </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">〉</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, &nbsp;&nbsp;&nbsp;</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">en los cuales &nbsp;&nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Π &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">es el alfabeto de la cinta de Procesamiento. Pueden procesar los Lenguajes Estructurados por Frases.</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><br /> <b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Los </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Autómatas Delimitados Linealmente (ADLs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) (ó </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Linear Bounded Automata</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) son MTs que para procesar una cadena solo requieren una cantidad de celdas en la cinta de procesamiento prácticamente igual a la de la cadena de entrada. Pueden procesar los Lenguajes Sensibles al Contexto (como </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">i</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> b</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">n</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> e</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">i</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">d</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;"> n</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">para </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">n, i</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">≥</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">1</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> ).</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><br /> <b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Las </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Máquinas de Turing que terminan</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">MTts</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">term</span><span style="font-size:11pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">son MTs que siempre culminan el procesamiento de cualquier cadena &nbsp;–aunque eventualmente después de </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">mucho</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> tiempo. &nbsp;Las MTs</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">term</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> pueden procesar los Lenguajes Decidibles.</span></b><br /> &nbsp;</p> <h3 dir="ltr"> 7. Lenguajes y Compiladores</h3> <p dir="ltr"><em>En SG#52, asumimos una actitud más “práctica” &nbsp;y abordamos el concepto “lenguaje” desde la construcción de programas que los procesan y hablamos sobre la estructura y funcionamiento de los compiladores:</em></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Obviando algunas precisiones, un compilador suele tener una estructura general como la siguiente:</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="231" src="https://lh6.googleusercontent.com/OzRdLy0JIrzpiNuxKcxal7jIIn-UGP-NS0O2lFDUlfa3BUQYfEjGVztdtL0jIEmVtuucLhJsate9UqwTCUJ6MlATbTl6gRswHvF-PtJZABIdoIb-G5Vm3adYOlgXLmtLBOhriNnAs0iOrBeR7A" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="505" /></span></b></p> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Grosso modo</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, su funcionamiento es como sigue:</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="white-space:pre;"> </span></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;">&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Cada vez que el </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">scanner</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Analizador Léxico</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) es llamado, reanuda su lectura de caracteres del </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Código Fuente</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> escrito en el Lenguaje</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">1</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">; se salta caracteres irrelevantes (como una secuencia de comentarios, blancos, y/o saltos de línea) y luego concatena los que sí son relevantes hasta completar una cadena que tenga significado por sí misma (por ejemplo “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">{</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">“, “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">main</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” y “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">contador</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” en el lenguaje C); en seguida detecta si la cadena es una palabra reservada (como “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">main</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">”), un símbolo (como “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">{</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">“), un identificador (como “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">contador</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">”) –en cuyo caso &nbsp;lo busca en la </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Tabla de Identificadores</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> y si no lo encuentra lo da de alta–, o un error léxico (en cuyo caso también emite el mensaje correspondiente); finalmente, regresa esta información a la subrutina que lo llamó,–usualmente el </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parser</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">– conteniendo al menos 2 elementos: la cadena en sí misma (el “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">lexema</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">”), y un código (el “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">token</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">”) que representa el tipo genérico de la cadena (como “Identificador”, “número” o “paréntesis de cierre”).</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;">&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parser</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Analizador Sintáctico</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) suele ser el componente central del procesamiento de un compilador. Manda llamar al </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">scanner</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, el cual como dijimos regresa la cadena que acaba de completar y la información mencionada. Con esos datos, el </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parser</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> busca seguir alguna de las reglas gramaticales del lenguaje; en caso de no encontrar alguna emite un mensaje de error sintáctico. En su procesamiento va utilizando y actualizando la Tabla de Identificadores (por ejemplo, escribiendo si el Identificador es el nombre de una subrutina o de una variable, así como su tipo), va construyendo el </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Árbol Sintáctico</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> del programa en cuestión (ver figura abajo), y va ejecutando instrucciones que tiene “embebidas”… A) del </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Analizador Semántico</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, que entre otras cosas revisa cuestiones relacionadas con tipos de datos y paso de parámetros (para lo cual se apoya en la Tabla de Identificadores); B) del </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Mecanismo de Recuperación de Errores</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, &nbsp;que al detectar un error emite el mensaje correspondiente y hace lo necesario para permitir que se pueda continuar con el análisis (como saltar secciones de código “problemáticas”); &nbsp;y C) del </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Generador de Código</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (el cual también se apoya en esa Tabla) para construir el </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Código Objeto</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> con instrucciones en el Lenguaje</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">2</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (aunque es usual generar primero código en un lenguaje intermedio, realizar un proceso de Optimización y luego generar el Código Objeto).</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;">&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El árbol sintáctico para la cadena </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">2</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> b</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">3</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> c</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">3</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> d</span><span style="font-size:6.999999999999999pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:super;white-space:pre;white-space:pre-wrap;">2</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;del lenguaje </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">L</span><span style="font-size:6pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">2</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, se muestra en la siguiente figura; en ella se se parte de S</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">0</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> y se van generando ramificaciones sustituyendo no-Terminales mediante la aplicación de alguna regla de la gramática; las hojas del árbol acaban siendo Terminales o </span><span style="font-size:10pt;font-family:Symbol;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">λ</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">.</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:'Times New Roman';color:#000000;background-color:#ffff00;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="201" src="https://lh5.googleusercontent.com/DKuwrh1mWKooxzas9T6fOQjMqjyOkXJS9twARfJbZpU-UtDkXNpVl6RlZrllQmL2LnI7Wev1U5-HIq-1zg6fIx9_mEQeQnsYdY0KGSqsbkBjDiz9VcQYVw2o_QKZWf-NSQ0fgiAxQr3uEaYMFg" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="62" /></span></b></p> <p>&nbsp;</p> <h3 dir="ltr"> Lenguajes de Computación (LCs) y Lenguajes de Programación (LPs)</h3> <p dir="ltr"><em>En SG#55, revisamos el concepto de “Computer Languages” como una generalización de los “Programming Languages”:</em></p> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Todos estamos familiarizados con el concepto de Lenguajes de Programación (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">LPs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) y existe bastante literatura sobre el tema. Sin embargo, si buscamos incrementar nuestra productividad deberíamos abrir nuestra panorámica y considerar no solo los LPs, sino lo que llamaremos aquí “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Computer Languages</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” o “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lenguajes de Computación</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">LCs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">), concepto que incluye los LPs, pero también los </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lenguajes de Documentación</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (como LaTeX y HTML), </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lenguajes de Arquitectura</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (como ABACUS y CBabel), &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lenguajes de Especificación</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (v.gr. de </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">sanners/parsers</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> como lex/YACC), </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lenguajes de Documentación de Procesos</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (como XPDL y JPDL), y </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lenguajes para la Prueba</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (como LoadRunner y Selenium), entre otros. Desarrollar lenguajes propietarios de propósito particular para estas áreas también puede incrementar significativamente nuestra productividad. </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Los LCs (y los LPs en particular) se desarrollan a lo largo de un proceso de sistematización–formalización–automatización durante el cual se va conociendo mejor el área para la cual se diseña el lenguaje (el “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Application Domain</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” o “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Dominio de Aplicación</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">”), detectando patrones útiles y repetidos en la construcción de programas.</span></b></p> <p dir="ltr"><em>Profundizamos en los Lenguajes de Programación (LPs):</em></p> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Cuando los LPs son de propósito general (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">general purpose languages</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) tienen constructos que son comunes a muchos otros LPs, tales como mecanismos de secuenciación, alternación y repetición de instrucciones, definidos en el marco de lo que llamamos un </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Sistema de Control </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">(Control System)</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">; </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;y mecanismos para construir, combinar, comparar, y descomponer tipos, definidos en el marco de un </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Sistema de Tipos </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">(Type System)</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">. Cuando los LPs son de propósito particular (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">special purpose languages</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) tienen además una parte diseñada especialmente para abordar más efectivamente problemas del Dominio de Aplicación, como tipos de datos y estructuras de control </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">ad hoc</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (v.gr. si el dominio fuera la Matemática, el LP podría tener construcciones y operaciones nativas sobre matrices, entre otras cosas).</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El Sistema de Control </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">La estructura del Sistema de Control está fuertemente influenciada por el paradigma del LP (ver más adelante), pero podemos hablar en general de constructos (o “abstracciones”) como los descritos en la siguiente tabla.</span></b></p> <p>&nbsp;</p> <div dir="ltr" style="margin-left:6.75pt;"> <table style="border:none;border-collapse:collapse"> <colgroup> <col width="159" /> <col width="297" /> <col width="191" /> </colgroup> <tbody> <tr style="height:0pt"> <td colspan="3" style="border-left:solid #000000 0.5pt;border-right:solid #000000 0.5pt;border-bottom:solid #000000 0.5pt;border-top:solid #000000 0.5pt;vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;margin-left: -14.7pt;text-indent: -36pt;padding:0pt 0pt 0pt 36pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Abstracciones de Control</span></b></p> </td> </tr> <tr style="height:0pt"> <td style="border-left:solid #000000 0.5pt;border-right:solid #000000 0.5pt;border-bottom:solid #000000 0.5pt;border-top:solid #000000 0.5pt;vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;margin-left: -14.7pt;text-indent: -36pt;text-align: center;padding:0pt 0pt 0pt 36pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Primitivas</span></b></p> </td> <td style="border-left:solid #000000 0.5pt;border-right:solid #000000 0.5pt;border-bottom:solid #000000 0.5pt;border-top:solid #000000 0.5pt;vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Compuestas</span></b></p> </td> <td style="border-left:solid #000000 0.5pt;border-right:solid #000000 0.5pt;border-bottom:solid #000000 0.5pt;border-top:solid #000000 0.5pt;vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">De Unidad</span></b></p> </td> </tr> <tr style="height:0pt"> <td style="border-left:solid #000000 0.5pt;border-right:solid #000000 0.5pt;border-bottom:solid #000000 0.5pt;border-top:solid #000000 0.5pt;vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Instrucciones simples como:</span></b></p> <ul dir="ltr"> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 4pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">goto</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’s</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">,</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">return</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’s</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">,</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Asignaciones</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Llamadas a</span></b> <b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">subrutinas o macros</span></b></li> </ul> </td> <td style="border-left:solid #000000 0.5pt;border-right:solid #000000 0.5pt;border-bottom:solid #000000 0.5pt;border-top:solid #000000 0.5pt;vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Instrucciones definidas en términos de otras &nbsp;instrucciones, en particular para construir…</span></b></p> <ul style="margin-top:0pt;margin-bottom:0pt;"> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 4pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Altenaciones</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">: &nbsp;</span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">if</span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">s</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">switch</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’s</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Repeticiones</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">: </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">while</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’s</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">for</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’s</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Secuenciaciones:</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> listas de instrucciones eventualmente enmarcadas con </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">begin</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> – </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">end</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Bloques</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> de &nbsp;instrucciones abstraídos en forma de &nbsp;subrutinas (procedimientos, funciones, módulos, etc.) o clases</span></b></li> </ul> </td> <td style="border-left:solid #000000 0.5pt;border-right:solid #000000 0.5pt;border-bottom:solid #000000 0.5pt;border-top:solid #000000 0.5pt;vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Mecanismos para almacenar, en archivos distintos y utilizando mecanismos como </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">include</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’s</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">uses</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, y </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">sees</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, segmentos de código &nbsp;con instrucciones relacionadas entre sí (“librerías”, clases o </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">A</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">bstract </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">D</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">ata </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">T</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">ypes </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">)</span></b></p> </td> </tr> </tbody> </table> </div> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:3pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El Sistema de Tipos </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">La estructura del Sistema de Tipos también está influenciada por el paradigma del LP, pero podemos igualmente hablar en general de constructos como los descritos en la siguiente tabla.</span></b></p> <p>&nbsp;</p> <div dir="ltr" style="margin-left:-5.75pt;"> <table style="border:none;border-collapse:collapse"> <colgroup> <col width="213" /> <col width="260" /> <col width="192" /> </colgroup> <tbody> <tr style="height:13pt"> <td colspan="3" style="border-left:solid #000000 0.5pt;border-right:solid #000000 0.5pt;border-bottom:solid #000000 0.5pt;border-top:solid #000000 0.5pt;vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp; <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Abstracciones de Datos</span></b></p> </td> </tr> <tr style="height:13pt"> <td style="border-left:solid #000000 0.5pt;border-right:solid #000000 0.5pt;border-bottom:solid #000000 0.5pt;border-top:solid #000000 0.5pt;vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp; <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Primitivas</span></b></p> </td> <td style="border-left:solid #000000 0.5pt;border-right:solid #000000 0.5pt;border-bottom:solid #000000 0.5pt;border-top:solid #000000 0.5pt;vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp; <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Compuestas</span></b></p> </td> <td style="border-left:solid #000000 0.5pt;border-right:solid #000000 0.5pt;border-bottom:solid #000000 0.5pt;border-top:solid #000000 0.5pt;vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp; <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">De Unidad</span></b></p> </td> </tr> <tr style="height:0pt"> <td style="border-left:solid #000000 0.5pt;border-right:solid #000000 0.5pt;border-bottom:solid #000000 0.5pt;border-top:solid #000000 0.5pt;vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Tipos de datos básicos (y predefinidos) como:</span></b></p> <ul style="margin-top:0pt;margin-bottom:0pt;"> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Ordinales: </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">char, int, boolean, enumerated</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Continuos: </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">real</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (con distintas precisiones)</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Apuntadores </span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">“Tipo nulo” o “comodín” (como el </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">void</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> de C)</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Rangos </span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Archivos</span></b></li> </ul> </td> <td style="border-left:solid #000000 0.5pt;border-right:solid #000000 0.5pt;border-bottom:solid #000000 0.5pt;border-top:solid #000000 0.5pt;vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Tipos de datos definidos en términos de otros tipos utilizando </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Constructores de Tipos</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> como:</span></b></p> <ul dir="ltr"> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Registros (“clásicos” o variables)</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Conjuntos </span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Secuencias (v.gr. arreglos y </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">strings</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">)</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Tipos no lineales (v.gr. listas, árboles &nbsp;y grafos)</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -14.7pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Clases </span></b></li> </ul> </td> <td style="border-left:solid #000000 0.5pt;border-right:solid #000000 0.5pt;border-bottom:solid #000000 0.5pt;border-top:solid #000000 0.5pt;vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Mecanismos para almacenar, en archivos distintos, segmentos de código &nbsp;con declaraciones/ definiciones de datos y de tipos de datos relacionados entre sí (incluyendo librerías, clases y </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Abstract Data Types</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) utilizando mecanismos como </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">include</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’s</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">uses</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, y </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">sees</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’</span></b></p> </td> </tr> </tbody> </table> </div> <p>&nbsp;</p> <p dir="ltr">El diseño del Sistema de Tipos es una actividad en sí misma por su complejidad y relevancia (define elementos vitales de la semántica del lenguaje). Su definición incluye cuestiones muy importantes como las siguientes:</p> <ol> <li>Chequeo de tipos: Distinguimos entre strongly-typed y weakly-typed languages, dependiendo respectivamente de la menor o mayor tolerancia a que a las variables de un programa no se les haya asociado explícitamente un tipo de dato. Si el chequeo de esta asociación se realiza en tiempo de compilación hablamos de statically-checked languages; si ocurre en tiempo de ejecución hablamos de dynamically-checked languages.</li> <li>Equivalencia de tipos: Se definen criterios para determinar cuándo se considera que dos variables tienen el mismo tipo, aunque eventualmente hayan sido declaradas de manera distinta. Algunas alternativas son:</li> </ol> <ul> <li dir="ltr"> <p dir="ltr">Declaration Equivalence: Dos variables tienen tipos equivalentes cuando remiten a la misma declaración de tipo.</p> </li> <li dir="ltr"> <p dir="ltr">Name Equivalence: Dos variables tienen tipos equivalentes si fueron declaradas usando el mismo nombre de tipo en el mismo ámbito (scope).</p> </li> <li dir="ltr"> <p dir="ltr">Structural Equivalence: Dos variables tienen tipos equivalentes si fueron definidas partiendo de los mismos tipos básicos y utilizando los mismos constructores de tipos.</p> </li> </ul> <ol start="3"> <li dir="ltr"> <p dir="ltr">Conversión de tipos: Para combinar variables de varios tipos se aplican mecanismos como los siguientes:</p> </li> </ol> <ul> <li dir="ltr"> <p dir="ltr">Conversión implícita (promotion), como cuando una variable entera es convertida automáticamente a real por aparecer en una expresión real.</p> </li> <li dir="ltr"> <p dir="ltr">Conversión explícita (casting): la que realiza el programador ya sea mediante la utilización de funciones predefinidas, o utilizando facilidades del lenguaje para “asignar tipos”, como el conocido casting.</p> </li> <li dir="ltr"> <p dir="ltr">Generalización del tipo de una variable a un tipo genérico, como el void del lenguaje C.</p> </li> </ul> <ol start="4"> <li dir="ltr"> <p dir="ltr">Inferencia de Tipos: Permite deducir el tipo adecuado de v.gr. una subexpresión dentro de una expresión; es particularmente importante en los weakly-typed languages. El conocido mecanismo de Unificación presente en ProLog es un interesante ejemplo de inferencia de tipos.</p> </li> </ol> <p dir="ltr"><em>Enunciamos los siguientes Criterios de Clasificación de LPs y abundamos en los 2 últimos, mostrados en la figura de abajo. </em></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Una manera de ganar perspectiva es mediante una clasificación, pero una taxonomía presupone criterios bajo los cuales clasificar. Para los LP podríamos tomar alguno(s) de los siguientes:</span></b></p> <ol dir="ltr"> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -7.65pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Su aspecto ante el programador, lo que permite v.gr. distinguir entre lenguajes </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">visuales y textuales</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">.</span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -7.65pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Su “composición estructural” (y la complejidad de procesar cada lenguaje), lo cual es el origen de jerarquías como la </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Jerarquía de Lenguajes de Chomsky</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">.</span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -7.65pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El “marco conceptual” detrás de los programas que se escriben en un lenguaje particular, lo que facilita la clasificación en </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Paradigmas de LPs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">.</span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -7.65pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El “origen cronológico” en el que fueron creados, lo que da pie al concepto de </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Generaciones de LPs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">. </span></b></li> </ol> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;margin-left: -0.05pt;text-indent: -0.05pt;text-align: center;padding:0pt 0pt 0pt 0.05pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="398" src="https://lh6.googleusercontent.com/T9boJ5S4x41hqLJPfcGLzJK3-ANHVT143J7aUI_ygmqoZ7Mn2xaWJ59cD1DsmIlkxWlCP8QXj507jEXA_H96rSdAyCqEp0hVTUIq7OHve2Y-JHBpr970baYyTBWJIsoDrFGvOgbFTU_vLEPjVA" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="551" /></span></b></p> <p dir="ltr" style="line-height:1.3800000000000001;margin-top:0pt;margin-bottom:10pt;margin-left: -35.45pt;margin-right: -25.9pt;text-indent: 35.45pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:4pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;</span></b></p> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.295;margin-top:0pt;margin-bottom:8pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:#c0c0c0;font-weight:400;font-style:italic;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span></b></p> <p dir="ltr"><em>También hablamos de Criterios de Diseño para desarrollar LPs que pueden aplicarse también a LCs:</em></p> <ol dir="ltr"> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 700; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -18pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Simplicidad</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, que</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">facilita su aprendizaje y uso.</span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 700; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -18pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Legibilidad</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, que permite a un novato entender programas rápidamente.</span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 700; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -18pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Expresividad</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, que</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">permite expresar procesos y estructuras complejos con poco código.</span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 700; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -18pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Uniformidad</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, que brinda consistencia en apariencia y comportamiento de constructos.</span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 700; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -18pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Generalidad</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, que</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">permite combinar constructos estrechamente relacionados en uno más general.</span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 700; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -18pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Ortogonalidad</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, que</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">permite combinar constructos cuando haga sentido, pero lo impide cuando causarían comportamientos inadecuados.</span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 700; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -18pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Extensibilidad</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, que permite añadir nuevos constructos.</span></b></li> </ol> <hr /> <p>&nbsp;</p> <h2 dir="ltr">Ejemplo Integrador</h2> <p dir="ltr"><em>Ahora abordaremos nuestro ejemplo, en el que incorporaremos mucho de lo que hemos visto hasta ahora en nuestra columna. El ejemplo tiene que ver con Métodos Formales, Lenguajes y Compiladores. &nbsp;</em></p> <p dir="ltr"><b style="font-weight:normal;"><span style="font-size:12pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Métodos Formales </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">En términos generales, los </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Métodos Formales</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">MF</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) son una tecnología mediante la cual podemos:</span></b></p> <ol dir="ltr"> <li style="list-style-type: decimal; font-size: 10pt; font-family: Verdana; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -7.65pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 6pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Escribir una </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">especificación</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> del sistema a desarrollar utilizando un lenguaje formal L</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">1</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (usualmente un lenguaje de especificación altamente expresivo), que luego es </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">verificada</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> con intervención humana y procesada mediante un compilador C</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">1</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> para así generar el código en otro lenguaje formal L</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">2</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> que representa un </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">diseño</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> de alto nivel.</span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Verdana; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -7.65pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 6pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Tomar este </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">diseño</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (quizás escrito en un Lenguaje de Arquitectura), verificarlo con intervención humana y procesarlo mediante un compilador C</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">2</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> que genera el código en otro lenguaje formal L</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">3</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> que representa un programa susceptible de ser optimizado.</span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Verdana; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -7.65pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 6pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Este programa (escrito quizás en un lenguaje de programación procedural de alto nivel) se procesa mediante un compilador C</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">3 </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">(que eventualmente optimiza el programa) para obtener finalmente el código objeto (quizás en lenguaje máquina). </span></b></li> </ol> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;margin-left: 10.35pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Las verificaciones mencionadas suelen ser demostraciones matemáticas de que el código correspondiente muestra ciertas propiedades.</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">En realidad, podríamos pensar que en el desarrollo de software siempre utilizamos algún tipo de MF, pues finalmente se escribe el sistema en algún lenguaje L</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">x</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> que es procesado por un compilador C</span><span style="font-size:6pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:sub;white-space:pre;white-space:pre-wrap;">x</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, el cual usualmente genera código ejecutable. Sin embargo, esta transformación suele realizarse solamente para el tercer numeral de los arriba descritos (la generación del sistema ejecutable a partir del programa escrito en un lenguaje de programación), no para todo el ciclo de desarrollo Requerimientos-Diseño-Programación, como buscan hacerlo los MFs.</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Por otro lado, y como ya hemos comentado, los analizadores sintácticos (o “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parsers</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">”) suelen definirse mediante una gramática. Para ello se utiliza alguna nomenclatura especializada como BNF o Grafos de Sintaxis; aquí utilizaremos esta última como lenguaje de diseño de lenguajes.</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Grafos de Sintaxis </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Los </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Grafos de Sintaxis</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">GSs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) tienen una definición formal inductiva que suele resultar muy intuitiva:</span></b></p> <p style="list-style-type: upper-roman; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 6pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Los siguientes son GSs básicos:</span></b></p> <ol style="margin-top:0pt;margin-bottom:0pt;"> <li style="list-style-type: lower-alpha; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: 17.4pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 6pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="35" src="https://lh3.googleusercontent.com/DW7r-tXHv-vos_6b1dkLKToJpXx81OBwj60coKp8ctcG3vachieFwOA5o5Ny4lv6LlziDJM22hbNy0sOllwe9ymWoi4u38R1IPCNatIWekySsKSdBzsybDJ7ooTvNYVzPs5e1Fk_PAkeqg2L5A" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="71" /></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (el grafo nulo) </span></b></li> <li style="list-style-type: lower-alpha; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: 17.4pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 6pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="36" src="https://lh4.googleusercontent.com/6nwqmQxtC4oZUOQhBdx7b-mVkbJVy-o7XfI7Vt0DH9PskFFZUY0Jc3-mxa0CLKiFKyNbg6Fm6EKplpHJ3Z8id0nRN2sqB0YGB4m6IpBaf6CJLwfFL1Lt-0r-mdw5SthblcpccOFJCJwPQtSBmw" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="88" /></span><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">donde </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">t</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">es un Símbolo Terminal</span></b></li> <li style="list-style-type: lower-alpha; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: 17.4pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 6pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="41" src="https://lh3.googleusercontent.com/taftLwE1xL1o0QBG-HSLzazdvNOQt_ib1P7acFyPZphQvMWbS6E_xD6bxLXEYDBB1LgnlSN022eH4yLWh6cq-TjVsRR0x7I7rGu5Y5eL69TxvwDotG8Qx7VtlXwZ9Iy92JigXYC8Gt1VTwqn6A" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="89" /></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;&nbsp;donde </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">N</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">es un Símbolo no-Terminal</span></b></li> </ol> <p>&nbsp;</p> <p dir="ltr" style="list-style-type:upper-roman;font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> Si &nbsp;&nbsp;&nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="48" src="https://lh3.googleusercontent.com/VD_-Rd2EwPAQM5_hjlasROmlg998271QmUyEFuQCCrZGZNLDgWNffEmUGk7gMYrmb4rz2Spv7R6Pr25Jsw4r0HhKuvNktk8wZ6YH5SIJNNA9BSJnqm1HEa_JCeP0xmSWbh_JhWcUf5qwHCfayQ" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="186" /></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;son GSs, entonces también lo son los siguientes:</span></b></p> <p>&nbsp;</p> <p style="list-style-type: lower-alpha; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: 17.45pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">la secuenciación de GSs </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;margin-left: 151.05pt;text-indent: 25.94999999999999pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;&nbsp;&nbsp;</span><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="52" src="https://lh3.googleusercontent.com/fRxghzgKV_OkJ0uxeaIrnxKAHtQuDBcUrAyaW_VrxPQPXNI6-Qy0sxpQ48FoOvn4yftRjZSoI8qzawBVxyC_cKO8cehczI1vt9DnyPdKTbK_Aa-JxCqJvYqXbjuzZgV1FrhI5AXs31_cFpf5BQ" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="180" /></span></b></p> <p>&nbsp;</p> <p style="list-style-type: lower-alpha; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: 17.45pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">la alternación de GSs</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;margin-left: 141.6pt;text-indent: 35.400000000000006pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;&nbsp;&nbsp;</span><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="112" src="https://lh5.googleusercontent.com/n9jUDQAyPeUd3a0oGqbFh4rgZRQWbcM5VPCOrM9I7_zgWoCCl-OJR4Lmc9No7fg5pNFkyLm16Ul_0I2rdl3_tJhu9sH34bh4WOqHKNg9mjjEFR6DxBL-eX1OfYzJbtrBCFgUO3ztYCm1W2nPhw" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="176" /></span></b></p> <p style="list-style-type: lower-alpha; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: 17.45pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">la repetición de GSs</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;margin-left: 141.6pt;text-indent: 35.400000000000006pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;&nbsp;&nbsp;</span><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="114" src="https://lh4.googleusercontent.com/W1ks6Oo4-nTHYm9flLfzDffbjFtLWxmdJj3OZYCWoZ48rJICuR7sG7mwHYD20U8fEr-CxCx4mwpqhJEk0Y5r-qeovzdBcx9xM6__S0RvJwQTJFZTOrYLqxmo2GTshHBzKzKdQiVVHXxFoPWIrw" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="174" /></span></b></p> <p><br /> &nbsp;</p> <p style="list-style-type: upper-roman; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 6pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Además, consideraremos que a un GS &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="56" src="https://lh4.googleusercontent.com/3XggUhVc85U2JvPA3ALtN9dsoEcHLQ8GJljYc1HCV7RM4P6S3ST-lUseKvcWUcltty4QiB0qFdMv_EOqUUWFpw2cLn-Bgs940HgyCLhJK32C72m8HXutV082pl7Bm6F5LwlECuFL96NNVrM1Bw" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="88" /></span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> se le puede asignar un nombre con el &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;que luego puede ser referenciado: </span><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="54" src="https://lh4.googleusercontent.com/8bHNdYLgbBjYtSFs0SbYinaBXHqy9GFy6HHYD1OrDuSC7BIiNQlrbz3G72v9KgsziIr7yL4xXK8t8vb8HMg-OXEAeRonEaEkXuaDzJp_By_OGfE2zAiMxVRi9QcOdulJPiNLLmqfn-zLTm_u6g" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="116" /></span><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> &nbsp;&nbsp;&nbsp;.</span></b></p> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Como ya hemos dicho, con los GSs pueden especificarse los Lenguajes Libres de Contexto. Ahora bien, dentro de esa clase hay un tipo de lenguajes (los </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">descendentes predictivos</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">) para los cuales es relativamente fácil escribir </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parsers</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> que los procesen, pero las gramáticas que los definen deben presentar ciertas características, en particular las siguientes (que por razones de espacio, no describiremos aquí de manera formal):</span></b></p> <ol dir="ltr"> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: 3.3pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">La definición de la gramática no puede tener recursión izquierda (el procesamiento se ciclaría indefinidamente), sea directa o indirecta;</span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Calibri; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: 3.25pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">En una alternación de grafos, no puede ocurrir que un par de ellos comience con la misma cadena (se requeriría </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">backtracking</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">).</span></b></li> </ol> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Un pequeño Método Formal </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Las reglas para construir un </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parser</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> descendente predictivo son relativamente sencillas y pueden ser automatizadas como bosquejamos a continuación, utilizando la rutina recursiva </span><span style="font-size:12pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C()</span><span style="font-size:12pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">que recibe como parámetro un GS y genera su código asociado (aquí en Pseudocódigo).</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">En el código de estas reglas, </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">err_msg()</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es una rutina que solo imprime </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">un</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> mensaje de error (sintáctico) y eventualmente hace abortar el proceso de análisis sintáctico (pero es posible sofisticarla sistemáticamente para que sea el elemento central de un mecanismo de Recuperación de Errores, de manera que detecte y anuncie errores sin interrumpir ese análisis).</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Por otro lado, </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">start()</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es una rutina recursiva que, dado un GS, regresa el conjunto de símbolos terminales con los que puede iniciar ese GS. Defiendo esa rutina de manera semi-formal (por cuestiones de espacio), y obviando algunas precisiones (como si un GS es nulo), tenemos que: </span></b></p> <ul dir="ltr"> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 6pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">start</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> de un GS que es un </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">símbolo terminal</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es el conjunto con ese no-terminal como único elemento.</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 6pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">start</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> de un GS que es un </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">símbolo no-terminal</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es el </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">start</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> del GS que lo define.</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 6pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">start</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> de un GS que es una </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">secuenciación de GSs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es el </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">start</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> del primero de esos GSs.</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 6pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">start</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> de un GS que es una </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">alternación de GSs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es la unión de los </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">start</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> de cada uno de esos GSs.</span></b></li> <li style="list-style-type: disc; font-size: 10pt; font-family: &quot;Noto Sans Symbols&quot;; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; line-height: 1.2; margin-top: 0pt; margin-bottom: 6pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">start</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> de un GS que es una </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">repetición de GSs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es el </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">start</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> del primero de esos GSs.</span></b></li> </ul> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Las reglas para la generación de </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parsers</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> a partir de GSs son las siguientes:</span></b></p> <div dir="ltr" style="margin-left:-5.75pt;"> <table style="border:none;border-collapse:collapse"> <colgroup> <col width="306" /> <col width="107" /> <col width="251" /> </colgroup> <tbody> <tr style="height:0pt"> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="69" src="https://lh4.googleusercontent.com/Ait0MgmELN88L9xQCvcmthhAOTbcc3m-vY1Zj0fiG8GPy2IoeKUewTnv69hRX4KuN21bVUTzoBVKPkar0DqeJ3uLep75sAfR72T8Ypux2OIPK9SvICBnHtVC5Z8ZVOmYcKgSfRq76gplsIuLuw" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="212" /></span></b></p> </td> <td colspan="2" style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp; <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El código asociado a un </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">GS con nombre</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es una rutina con ese nombre, que incluye el código del GS.</span></b></p> </td> </tr> <tr style="height:0pt"> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="22" src="https://lh5.googleusercontent.com/tBuokX3RH-6hfa_Idm7URQXK3Yw_iNDLk-laYYQurnHgX6KBFhFSDxAL1L7KqbBSk77BG0ZEe3-iue2hyHoKJHCM1G4Brp1DmtH7Nid_ktDB6FxhO6Dl4UycAdLj1Vc5I4eB6I9FeHF8tDfO1Q" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="119" /></span></b></p> </td> <td colspan="2" style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El código asociado a un </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">GS nulo</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es la instrucción nula.</span></b></p> </td> </tr> <tr style="height:0pt"> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="28" src="https://lh4.googleusercontent.com/DuHCM4jKibnqHD2bu9pGn3Wtfetp1dFFd3R_HwBsB0OQNaTL2XjnfvNPC3EqVL72r-a8okz6cMhwhDUuzQHe3TZUC1V4RspLIepc1c9txMg8c2jWZar1407kPR1zfhE3wjE56rCP0iF5KD_M8Q" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="149" /></span></b></p> </td> <td colspan="2" style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El código asociado a un </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">GS que es un no-terminal</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es una llamada a la rutina asociada a ese no-terminal.</span></b></p> </td> </tr> <tr style="height:0pt"> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp; <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="94" src="https://lh4.googleusercontent.com/uCZtcdPM3auEw6Qf6pCr09lbmXvIyEg_YQKHaJ98w-m5rp170iQWkvhBBfP4a48gvynwZEz8JNhnBPmXoktWPx2mnttEk5iaAJx6Mfci28ZFcs2_J3fic6ufa-1rRzwHjukfOFb2sqSRliU-TQ" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="291" /></span></b></p> </td> <td colspan="2" style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp; <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El código asociado a un </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">GS que es un terminal</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es: si el token actual es el que se espera, se invoca al analizador léxico (scanner) para obtener el siguiente token; en caso contrario, se emite un mensaje de error .</span></b></p> </td> </tr> <tr style="height:0pt"> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="81" src="https://lh6.googleusercontent.com/YZLex0VHTk8SdQpj3wmNIi5HcnO8dJzNg_qvYniDF17hpiluptMzWVBoWzVAr6zGH4_jvGnvn2iriuYFNVcfzRHju5jRLc0L5CREs13_el3suze7-_aTsLoVwBthUIu8LzTD9TGqRjj9x3iBjg" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="265" /></span></b></p> </td> <td colspan="2" style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp; <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El código asociado a un </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">GS que es una secuenciación</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> de GSs es la secuenciación del código generado para cada uno de los GSs.</span></b></p> </td> </tr> <tr style="height:0pt"> <td colspan="2" style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="113" src="https://lh3.googleusercontent.com/j2PxapLWjC0BIFDTsQrNMtR_K0old4pIvRfVOe-KX7EOsqzegKIAM2HyUNIOCKqK9MLFOjTIw8fq20DxVwXL4mdcLDyn0Qn6zdBGQAFZ-IN18bhtHnprM6s3OkLh154aDf0HZaYvi08L8cuPZA" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="379" /></span></b></p> </td> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp; <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El código asociado a un </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">GS que es una alternación</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> de GSs es la alternación del código de cada GS expresada en términos del token actual y de aquello con lo que puede iniciar cada uno de los GSs respectivos.</span></b></p> </td> </tr> <tr style="height:0pt"> <td colspan="2" style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="97" src="https://lh3.googleusercontent.com/8urQ_G3xQKXripJg5hReSF9rPc7YhnVoF-k1_phA1Ksv_siZSisgkBQ7Z9WCUudyMaiXLPKaVHY7qzIxPwfvkC3yrd1vbt7EDTnabOs_bYInJCBnH2umsOKqzWs0riQRg1vSjuBA9u0IsmIYjg" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="394" /></span></b></p> </td> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp; <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El código asociado a un </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">GS que es una repetición de GSs</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> es el código del primer GS, seguido de la repetición del segundo y del primero hasta que el token no sea algo con lo que puede iniciar el segundo. </span></b></p> </td> </tr> </tbody> </table> </div> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Con los elementos anteriores podríamos tener un pequeño MF para los últimos 2 numerales listados en la definición de MF:</span></b></p> <ol dir="ltr"> <li style="list-style-type: decimal; font-size: 10pt; font-family: Verdana; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -7.65pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 6pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Escribiríamos el </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">diseño</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> del lenguaje utilizando el &nbsp;lenguaje formal de los GS, el cual sería verificado por un compilador de GS para detectar recursión izquierda y/o alternaciones de GS no permitidas (además de otras cosas como no-Terminales indefinidos o caracteres inválidos); en caso de haberlas, el diseño sería corregido con intervención humana. Una vez corregido y verificado nuevamente, el compilador de GS podría generar el </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parser</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> en pseudocódigo como lenguaje intermedio. </span></b></li> <li style="list-style-type: decimal; font-size: 10pt; font-family: Verdana; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: -7.65pt; line-height: 1.2; margin-top: 0pt; margin-bottom: 6pt; text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Este </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parser</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> “correcto” &nbsp;a su vez sería procesado (y optimizado, fase que no abordaremos aquí) mediante un compilador de pseudocódigo que generaría el programa en algún lenguaje de alto nivel, a elección del usuario (v.gr. Java, ADA o LISP), para luego ser procesado por el compilador correspondiente que generaría el código ejecutable.</span></b></li> </ol> <p dir="ltr" style="line-height:1.295;margin-top:0pt;margin-bottom:8pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:5pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Ejemplo </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Las expresiones en los lenguajes de computación son muy importantes. En lenguajes de programación de alto nivel procedurales aparecen en asignaciones, en condiciones de instrucciones como </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">if</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> y </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">while</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, y en el paso de parámetros; en LISP –el lenguaje funcional por antonomasia– tanto datos como programas son un tipo especial expresiones.</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Apliquemos nuestro MF para desarrollar un </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parser</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> que procese expresiones algebraicas simples como &nbsp;&nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a+3*2, &nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">(</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a+b</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">)</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">*2 &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">ó </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">((</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">a+b</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">)</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> /3*</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">(</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">b-c</span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">)) &nbsp;</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, en las que la precedencia de los operadores es la usual: </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">+ </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">y </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">- </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">tienen igual precedencia, la cual es inferior a la de </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">*</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> y </span><span style="font-size:10pt;font-family:'Times New Roman';color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">/</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> , que también tienen la misma precedencia.</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Uno podría iniciar definiendo la siguiente gramática:</span></b></p> <div dir="ltr" style="margin-left:0pt;"> <table style="border:none;border-collapse:collapse"> <colgroup> <col width="335" /> <col width="330" /> </colgroup> <tbody> <tr style="height:0pt"> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp; <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="185" src="https://lh4.googleusercontent.com/by92OcksC8MZV-xrMD01KM-mrStdW8-0-_Z0KSnToHIbMzUU99m17FLJK6cDDHfzdEFiJKAilCw8sXAPu7XkPkZkd-Qx-p5L9ezo176D39_AaGOplb-5tF-JbnNCaWNtlTMBmgrxGiSTLuYz3w" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="274" /></span></b></p> </td> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="217" src="https://lh4.googleusercontent.com/b5Om3re-WPbqmVe2sKyFpyBrIXthWlRthpkyzzAuyflpiR-EOmBqLKu7vEDZ9gF3gS3uM4fHmaqDySabMaMvDnovgnY-NUgGG_F5Dkeg2dAQStK-PQCJVc-OPEce9UorDcOHfkhQ9-7xwE3PhQ" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="133" /></span></b></p> </td> </tr> </tbody> </table> </div> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Sin embargo, esa gramática presenta inconvenientes importantes: no garantiza que para cada “(“ haya un “)”, y todos los operadores tienen la misma precedencia. Desgraciadamente, nuestro pequeño MF no podría ayudarnos con estos problemas.</span></b></p> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Buscando resolver los problemas anteriores, y generalizando para que en lugar del “Elm" de la gramática anterior, tengamos Identificadores y Números podríamos proponer esta otra gramática:</span></b></p> <div dir="ltr" style="margin-left:0pt;"> <table style="border:none;border-collapse:collapse"> <colgroup> <col width="334" /> <col width="331" /> </colgroup> <tbody> <tr style="height:0pt"> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="195" src="https://lh3.googleusercontent.com/4wYfP7T-RSA7ZW9p3_3Lv7T2_JBUEgfG8qAk05U5yb4jHl8sD6n_46YzpDVZaGjxWGklRwJKnJ90lwfxqb8qm8HxTPRGQgmLG_pYHMT8xYjOuD_c7gnpHiHoFpXhuM-jEti6fCTlnCaZl98TFg" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="248" /></span></b></p> </td> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp; <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="138" src="https://lh5.googleusercontent.com/9FuotRhbZVCvCqEd4NKPgd8CUBovai-tzbIbM4bDnbbN9z2gNyAYkYEiYoPwcLcv6npCMLVoyQVO76s2Qy7CXbCC3s478wZ0cU2ToVknZQk3GFX5xD6LHq7LqQUxsGgwfaq08KiR23L40sL6pw" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="157" /></span></b></p> </td> </tr> </tbody> </table> </div> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Esta gramática también presenta inconvenientes, pero esta vez nuestro MF sí puede ayudarnos: nos diría que el no-terminal “Opr" no está definido (el grafo que le correspondía está tiene el nombre “Oprr”), y –más grave aún para efectos del funcionamiento del </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parser</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">– que existe recursión izquierda (“Xpn").</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Podríamos entonces proponer la siguiente gramática:</span></b></p> <div dir="ltr" style="margin-left:0pt;"> <table style="border:none;border-collapse:collapse"> <colgroup> <col width="351" /> <col width="314" /> </colgroup> <tbody> <tr style="height:0pt"> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="81" src="https://lh6.googleusercontent.com/OQF0jyJMxssSOF5gVij7T7fLTVRv1mlJ95RzMd8BVgqFDnYP22Hox2Bs--kUKreYdwqZv8F8dh2djSkw-tCLoCpcqrsoIHplw3i0HrA4m6jWtBxbS8JetdGRxUL-QVxPlxM9IoS5nNbmACTkCA" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="317" /></span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="112" src="https://lh4.googleusercontent.com/od7iLTUwcDmWxbIOJfDRGHlkRXg0c3HoemyR-ZmLISwohVk2jhAXDlLfyCNaYE2c1QYFrMIa_XfNNsRAupzvgGwHqoUD7xmYGshKT13vvgn1R-kCWFKUpTE5CJLUu-vcq-JftKjHiWhpGYgcFQ" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="235" /></span></b></p> </td> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp; <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="134" src="https://lh4.googleusercontent.com/H-9R_HLJoSlBo9X5p1LYdglawbptYjsf660S4_jHwMfG9yTbVTgAfeT9of9e0b_YygyJ8ISkxzKWHJmeXpSOgT3veWceoAy5rB1EW_5Czq7J2l2KZzIkrBxEVhsQd2YNBL4ucf42H5iTBcH7bQ" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="144" /></span></b></p> </td> </tr> </tbody> </table> </div> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Pero el MF nos diría que dos de las alternativas en el GS “Xpn” comienzan con la misma cadena (“Opnd”).</span></b></p> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Por ello podríamos proponer la siguiente gramática, que es una buena alternativa:</span></b></p> <div dir="ltr" style="margin-left:0pt;"> <table style="border:none;border-collapse:collapse"> <colgroup> <col width="331" /> <col width="333" /> </colgroup> <tbody> <tr style="height:0pt"> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;"> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="111" src="https://lh6.googleusercontent.com/-DZrHG0kQx4ftWPUaWFoVEoaAJmcr_hHnPfQVqT1gZdFQuT_3xapV9F8q0Fd0KmoOES02W_Q3c-Wcypp2Pin-7Np1tzZiYfC8Zu1F_JYgJnBbrZPBTtAXSViUZWJIcaFgkPZ4jRvvAx00TMtPg" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="197" /></span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="107" src="https://lh6.googleusercontent.com/Zc49T2nnB3-H4G8ZSZyHMdDkG3yRC71egIkQknbG_wCDAwt_Fgrjkvm-FF1Yuo2uMsVAvEDNLaTRyfocsIJNRr9ZAyrNX4k_lukCUO9O82n8QHddSs7WnwZDiUkgfL0yS_d4mp4SHvkbmDAA1w" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="208" /></span></b></p> </td> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp; <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="122" src="https://lh5.googleusercontent.com/qIyrTMsSIghl2poqkOrYcYPE5FA1NSEniDf3Uz6AOnv2BCni8h34caXZeZqjxiesasV_dDzYK0YhDHFD8WdU0ttJ3WokulqLUpdMDqMoCJ9SzDh6b3OxCahGN9L0EeH5LZFN5Am14GajvpfL9w" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="249" /></span></b></p> </td> </tr> </tbody> </table> </div> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">El MF no se quejaría, pues en particular no hay recursión izquierda, no existen dos subgrafos que comiencen con la misma cadena, y no hay no-terminales indefinidos. Y, dado que los operadores aparecen en una jerarquía de grafos, se tienen las precedencias deseadas. Además, los operadores presentan la precedencia deseada.</span></b></p> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Con esta gramática que tiene las características que requiere el MF, éste podría proceder a generar el pseudocódigo del </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parser</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> aplicando la rutina &nbsp;</span><span style="font-size:12pt;font-family:'Courier New';color:#009900;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C()</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">:</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Para “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Xpn</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” el código se iría generando sistemáticamente como se muestra a continuación (el resultado de los </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">start</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> se muestran explícitamente):</span></b></p> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="116" src="https://lh5.googleusercontent.com/ZZdvolU-1UwHjmug_aj3HUga8Y96Jo5EW1eIJgOPr4D2vzT9XRAnpqJDWesyDCTOKv5BWEvxtPuFLCJ3gsMZ8h0sYd5L5KVzxOWzj0FjwfbbmTa9qgFMsUWpLcG7oY9X5USKWF5CKCbUqrh3Ug" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="431" /></span></b></p> <div dir="ltr" style="margin-left:0pt;"> <table style="border:none;border-collapse:collapse"> <colgroup> <col width="395" /> <col width="309" /> </colgroup> <tbody> <tr style="height:0pt"> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp; <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="165" src="https://lh6.googleusercontent.com/2WwBNKcCCrcpMVhkr2D-VLDdpOuMHT3DzTt3Lf_KIz0QHANoHzg_LGNJW8EGzgbfx1VTXrjXFpZ11-zURMCzKl0AXwnEfMyeQwjWMGGfyXEsTIPc3GAzPBui4HvfSCNuf0IP7bldyAzKsh0IoQ" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="289" /></span></b></p> </td> <td style="vertical-align:top;padding:0pt 5.75pt 0pt 5.75pt;">&nbsp; <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: center;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="235" src="https://lh6.googleusercontent.com/pqE-IkngVHge74we0EpuaKA8Go_ZtOOAgbDM_XZa7qC2V8D5j9ynGGHiUkLzoxxDe0T7aBqS69a8XsW_k61FQvXV1jZoBYaa4ZR5srtYczSwo8z109NMFm-_X7xbFFh3pVPTjdLJ5boizWoXTw" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="294" /></span></b></p> </td> </tr> </tbody> </table> </div> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="328" src="https://lh6.googleusercontent.com/-A0dmhyTIP3wP0X3RhkKIioa6K7oMOdILU_MqLrlegZzi2u21owO9LbLc9zbpFPpyM9ZHYZ7IQK5SAE9745tGsDZVbFiFOsQejR3WpGeQaWVChfGQjkxgSTTCi26bNqiI3zLYoIuy_36DXZZug" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="381" /></span></b></p> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Para “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Sum</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” el código que finalmente se generaría sería el siguiente (podrán apreciar varias oportunidades de optimización):</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Verdana;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="286" src="https://lh6.googleusercontent.com/lwvGMLUa7xg1i-78S01aR2gMMOL_hTFn04UarLhYauz5T-JCpo9kLnhZ37la_am3U_u9wr6mdATiz9Q5OYGKdML4KAJvdmStmlDgjbPHsB9PcRtxyMwqQmKfojiPQQGfsPzUzWqDRwNpY-6rUg" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="326" /></span></b></p> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.295;margin-top:0pt;margin-bottom:8pt;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Para “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Fact</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” el código que finalmente se generaría sería el siguiente (también con varias oportunidades de optimización):</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img height="311" src="https://lh3.googleusercontent.com/_uHkw5Ki_tNbQkCvjEJSDrtraqYibbLE65C-DFMZzkGu2DwzlMtPyutHczEa88jxGrI1rYxMZht4aAThRaQ4PUNrr-_9XBcGJaK7e2n4jRcbGi6w5f2X6nPlZI88MFDvXCY-mX4l-u4Gwlerew" style="border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);" width="403" /></span></b></p> <p>&nbsp;</p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Por definición, el programa principal del </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parser</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> llamaría a la rutina </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Xpn()</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (dado que es el símbolo no-terminal que actúa como símbolo inicial de la gramática), la cual llamaría a </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Sum()</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> cuando fuera necesario y ésta de igual manera a </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Fact()</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">. Ustedes podrán constatar que ese programa procesa el tipo de expresiones que definimos.</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:4pt;margin-bottom:0pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:12pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Conclusiones </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Utilizando este MF para desarrollar </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parsers</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> podemos destinar más tiempo al diseño de una gramática que procese el lenguaje que nos interesa, que a la escritura de un programa que lo haga con lo cual podemos desarrollar un lenguaje de mejor calidad; y al no ser necesario atender tantos detalles, habría menos probabilidad de cometer errores (el </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parser</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> también podría tener mejor calidad), y terminaríamos más rápidamente (la productividad se incrementaría). Además, los GSs son más expresivos, simples y legibles que el pseudocódigo, con lo cual ganaríamos una mejor “mantenibilidad”. </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lo anterior es posible porque se introduce un lenguaje formal de mayor nivel de abstracción (GS), que nos permite no tener que atender detalles poco importantes (como instrucciones en y con </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">if</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’s, </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">while</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’s, </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">switch</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’s, conjuntos, recursiones, etc.) para desarrollar software de una manera más abstracta y sistemática.</span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Si medimos el “tamaño” de del </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">input</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (cantidad de GSs) y del </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">output</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (cantidad de líneas de pseudocódigo) de la subrutina &nbsp;</span><span style="font-size:12pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">C()</span><span style="font-size:12pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&nbsp;podríamos ver que en general, cuando crece la complejidad del </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">input</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">, la complejidad del </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">output</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> puede crecer en un orden de magnitud (10x). Esto es: cuando usamos el MF para desarrollar el </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">parser</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> asociado a una gramática definida con GSs que contienen muchas alternaciones y repeticiones de GSs, la proporción entre el </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">input</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (GSs) y el </span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">output</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> (líneas de pseudocódigo) puede exceder las 10 veces (1,000%). </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Y esa es precisamente la idea detrás del desarrollo de lenguajes propietarios: introducir un lenguaje formal que nos permita subir el nivel de abstracción de lo que hacemos para centrarnos más en actividades como el diseño, y dejar que el compilador del lenguaje propietario genere los detalles (como ocurrió con los lenguajes de alto nivel, que generaban el código en lenguaje máquina asociado a constructos como </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">if</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’s, </span><span style="font-size:10pt;font-family:'Courier New';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">while</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">’s). </span></b></p> <p dir="ltr" style="line-height:1.2;margin-top:0pt;margin-bottom:6pt;text-align: justify;"><b id="docs-internal-guid-f1ca9769-7fff-fa54-67c9-23da9dc6568f" style="font-weight:normal;"><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Hacer esto es particularmente relevante en un mundo en el que actualmente en muchas grandes transnacionales tecnológicas, “</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Robots</span><span style="font-size:10pt;font-family:Calibri;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">” &nbsp;realizan funciones como las anteriores y generan la misma cantidad de código (en lenguajes de alto nivel) que el que generan sus ingenieros.</span></b></p> <p><br /> <br /> &nbsp;</p> </div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p>Luis Vinicio León Carrillo es Director General y co-fundador de e-Quallity. Antes de fundar e-Quallity fue profesor-investigador en la universidad jesuita ITESO durante varios lustros, que incluyeron una estancia de posgrado en Alemania, durante la cual abordó aspectos relacionados con el Testing y los formal methods and languages.</p> </div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Tue, 15 Jan 2019 20:51:47 +0000 sg 8528 at https://sg.com.mx https://sg.com.mx/revista/58/el-impacto-de-los-lenguajes-propietarios-de-proposito-particular-una-vision-panoramica#comments Cómputo Cuántico https://sg.com.mx/revista/58/computo-cuantico <span class="field field--name-title field--type-string field--label-hidden">Cómputo Cuántico</span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-01/136343_shutterstock_1015677376.jpg" width="1200" height="720" alt="" loading="lazy" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/44582" lang="" about="/user/44582" typeof="schema:Person" property="schema:name" datatype="" class="username">Ivett Sanchez</a></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 01/15/2019 - 13:30</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/58" hreflang="zxx">SG #58</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/buzz/autores/pedro-galvan" hreflang="und">Pedro Galván</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>#YoConfieso que al escuchar sobre cómputo cuántico, una parte de mi se emociona por todas las posibilidades que abre, pero otra parte quiere taparse los oídos y “hacerse loco” para no tener que lidiar con la complejidad y nuevos retos que involucra un nuevo paradigma de cómputo. Pero eventualmente, el futuro nos alcanza y tenemos que enfrentarlo, así que aprovechemos esta oportunidad para conocer más sobre este tema.</p> <p><meta charset="utf-8" /></p> <p dir="ltr">Básicamente, la mecánica cuántica plantea que los electrones u otras partículas subatómicas tienen algunos superpoderes medio locos como la superposición que es la posibilidad de ser una onda y partícula a la vez, el efecto túnel (quantum tunneling) que les permite atravesar barreras, y el entrelazamiento (entanglement) que les da poderes psíquicos —como si tuvieran un gemelo y cuando uno es afectado el otro también de forma simultánea.</p> <p dir="ltr">Una computadora cuántica aprovecha estos fenómenos cuánticos para computar problemas matemáticos complejos que tomaría mucho tiempo/esfuerzo resolver por medio de una computadora tradicional.</p> <p dir="ltr">Una computadora cuántica utiliza qubits para representar información a través de un sistema. A diferencia de un bit tradicional, cuyo estado es representado por un 0 o un 1, el estado de un qubit es una superposición de ambos valores (0 y 1). Es decir que un qubit puede tener distintos estados al mismo tiempo.</p> <p dir="ltr">Imaginemos que escribo una ‘X’ en una página aleatoria de un libro aleatorio en una biblioteca con un millón de libros y le pido tanto a una computadora clásica como a una cuántica que encuentren la X. Para resolver esto, la computadora clásica tendrá que recorrer una por una cada una de las páginas de cada uno de los libros en la biblioteca, lo cual requiere una gran cantidad de tiempo. En cambio, la computadora cuántica utiliza la superposición y entrelazamiento de sus qubits para analizar todas las páginas al mismo tiempo. Repasemos esto:</p> <ul> <li dir="ltr"> <p dir="ltr">El estado de un qubit es una superposición de 0 y 1.</p> </li> <li dir="ltr"> <p dir="ltr">Un sistema complejo de qubits puede estar en múltiples superposiciones de forma simultánea, por ejemplo 5 qubits pueden estar en una superposición de 32 estados (2^n).</p> </li> <li dir="ltr"> <p dir="ltr">Si tenemos 2 qubits entrelazados, la información de un qubit revelará información sobre el otro qubit.</p> </li> </ul> <p dir="ltr">Al combinar las capacidades de superposición y entrelazado, los qubits pueden procesar cantidades de datos enormes de forma simultánea y resolver problemas complejos que le tomarían millones de años a las computadoras clásicas.</p> <p dir="ltr">Las computadoras cuánticas ya son una realidad. Por el momento solo existen en laboratorios sofisticados, y operan con unos cuantos qubits, pero ya sabemos cómo se mueve nuestra industria, y antes de que nos demos cuenta ya se estarán utilizando para todo tipo de fines. En las próximas páginas conoceremos más sobre ellas y sus aplicaciones. Dado que este es un tema con mucha tela de donde cortar, te invito a que consultes las referencias indicadas en los distintos artículos para conocer más al respecto.</p> </div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p>&nbsp;</p> <p><meta charset="utf-8" /></p> <p dir="ltr">&nbsp;</p> <p dir="ltr"><meta charset="utf-8" /></p> <p dir="ltr">Pedro Galván Kondo es Director Editorial de SG Software Guru.</p> </div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Tue, 15 Jan 2019 19:30:25 +0000 Ivett Sanchez 8514 at https://sg.com.mx https://sg.com.mx/revista/58/computo-cuantico#comments Cuando el Futuro nos Alcance: ¿En qué podemos utilizar computadoras cuánticas? https://sg.com.mx/revista/58/cuando-el-futuro-nos-alcance-en-que-podemos-utilizar-computadoras-cuanticas <span class="field field--name-title field--type-string field--label-hidden">Cuando el Futuro nos Alcance: ¿En qué podemos utilizar computadoras cuánticas?</span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-01/quantum1_0.jpg" width="800" height="452" alt="" loading="lazy" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/44582" lang="" about="/user/44582" typeof="schema:Person" property="schema:name" datatype="" class="username">Ivett Sanchez</a></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 01/15/2019 - 13:29</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/58" hreflang="zxx">SG #58</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/buzz/autores/arturo-silva-ordaz" hreflang="zxx">Arturo Silva Ordaz</a></li> <li><a href="/buzz/autores/salvador-e-venegas" hreflang="und">Salvador E. Venegas</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p><meta charset="utf-8" />¿Cuándo tendremos una computadora cuántica lista para usarse? En los albores del siglo XXI, las respuestas a esta pregunta eran una oda a la incertidumbre: desde la negación total de cualquier posibilidad de éxito hasta el optimismo de quienes esperábamos verlas antes de llegar a la vejez. La realidad resultó ser aún más entusiasta: menos de dos décadas después, tenemos ya computadoras cuánticas funcionales, con muchos temas técnicos por resolver (particularmente en el escalamiento) pero ya las tenemos con nosotros.</p> <p dir="ltr">Ahora, ¿qué sigue? ¿Cómo hacemos de estos resultados formidables una rama de la industria, fuente de empleo, un nuevo camino para resolver problemas de frontera?</p> <p dir="ltr">Veamos la historia de la computación para intentar responder las preguntas anteriores. En el siglo XIX y principios del XX, la palabra computer era empleada para referirse a una profesión, no a una máquina: los human computers fueron personas que se dedicaban, bajo contrato, a la realización de cálculos complejos y su trabajo fue una de las primeras aplicaciones de los métodos de producción industrial en el quehacer científico.</p> <p dir="ltr">Tanto los human computers como, posteriormente, las machine computers trabajaron en problemas de corte científico y militar. Aunque esta labor tuvo impactos mayúsculos en la sociedad, la capacidad instalada y los requerimientos en capital humano no eran suficientes para que la computación fuese un detonador de crecimiento económico. La industria de TICs de nuestros tiempos es el resultado la transversalidad de la tecnología computacional, esto es, de la combinación virtuosa de hardware en constante evolución, capital humano y algoritmos sofisticados en la solución de problemas, emanados de gobiernos &nbsp;así como de la iniciativa privada, de corte ingenieriles, contables, administrativos y financieros, entre muchos otros.</p> <p dir="ltr">Es muy probable que el cómputo cuántico pase por un proceso similar al ya descrito. En este punto de la historia del cómputo cuántico, necesitamos imaginar y desarrollar killer apps.</p> <p dir="ltr">En este artículo hablaremos de dos áreas incipientes de aplicaciones del cómputo cuántico: solución de problemas de optimización e internet cuántico.</p> <h3 dir="ltr">Solución de problemas de optimización</h3> <p dir="ltr">Los problemas de optimización se caracterizan por tener modelos matemáticos en los que hay una o varias expresiones matemáticas para las que necesitamos encontrar valores máximos o mínimos. Por ejemplo: ¿de qué forma puedo acomodar el inventario para minimizar el espacio no utilizado?, o ¿cuál es la cantidad máxima estimada de energía eléctrica que se consumirá por parte de la industria mexicana en 2027?</p> <p dir="ltr">Resolver problemas de optimización es, en lo general, una tarea complicada que necesita de expertos en matemáticas, computación y el área de la que emanan dichos problemas. Las disciplinas en las que se usan técnicas de optimización para modelado de problemas son muchas y variadas: aeronáutica, inversiones, comportamiento de casas de bolsa e inteligencia artificial, entre otras. En todos los casos, el modelo consiste en la construcción de funciones de costo (también llamadas funciones objetivo) y la solución del problema consiste en conocer las variables de entrada que minimizan/maximizan el valor de la función.</p> <p dir="ltr">Los problemas de optimización tienden a consumir muchos recursos computacionales en poco tiempo (esto es, son típicamente problemas NP-duros). &nbsp;Gracias a los fenómenos de superposición, paralelismo cuántico y tunelamiento cuántico, los ordenadores cuánticos son buenos candidatos para resolver problemas de optimización (ver por ejemplo [1] para una introducción a la programación de quantum annealers para la solución de problemas de optimización) y, por ello, una parte de la comunidad de científicos e ingenieros cuánticos nos dedicamos a la construcción de algoritmos cuánticos para resolver problemas en las siguientes áreas, entre otras:</p> <ul> <li dir="ltr"> <p dir="ltr">Portafolios de inversión.</p> </li> <li dir="ltr"> <p dir="ltr">Visión computacional.</p> </li> <li dir="ltr"> <p dir="ltr">Simulación de moléculas.</p> </li> <li dir="ltr"> <p dir="ltr">Aprendizaje computacional (machine learning).</p> </li> </ul> <p dir="ltr">Para conocer más de estos temas, recomendamos revisar los contenidos de [1,2,3,4,5]. Además, es conveniente conocer las propuestas y programas de trabajo en materia de algoritmos cuánticos que hoy se encuentran en el mercado global de computación cuántica. Para este propósito, recomendamos visitar los sitios enlistados en [6,7,8,9,10].</p> <h3 dir="ltr">Internet cuántico</h3> <p dir="ltr">El término Internet Cuántico es un neologismo cuya definición está en evolución constante. Al momento, esta noción representa el uso de protocolos de seguridad emanados de la teoría de la información cuántica así como la construcción de redes para comunicación de datos cuánticos.</p> <p dir="ltr">En cierto sentido, las computadoras cuánticas actuales son como los mainframes: grandes, con altos costos de operación y, además, no es fácil cambiarlos de lugar. Por lo anterior, el acceso a estas máquinas se hace de forma remota y es muy probable que este método de acceso permanezca así por varios años.</p> <p dir="ltr">En este escenario, es importante construir protocolos de acceso seguro a las computadoras cuánticas que estén disponibles en la nube, protocolos que puedan echar mano de métodos de codificación de datos como el protocolo de distribución cuántica &nbsp;de llaves BB84 ([11,12]).</p> <p dir="ltr">Por otra parte, la creación de sensores capaces de detectar y transmitir información cuántica, área de rápido crecimiento que es abordada en el artículo de Marco Lanzagorta escrito para esta edición especial, requiere de redes de comunicación para ser funcionales y útiles para la sociedad.</p> <p dir="ltr">La creación del Internet Cuántico demanda la elaboración de tecnología cuántica como repetidores cuánticos e implantaciones robustas del protocolo de teletransportación cuántica. Como en toda aventura científico-tecnológica, es muy probable que los desarrollos de hoy encuentren usos y vías de crecimiento ulterior que hoy no podemos vislumbrar. Por lo anterior, esta etapa del cómputo cuántico es tierra fértil para mentes y organizaciones emprendedoras.</p> <p dir="ltr">Referencias</p> <p dir="ltr">[1] S.E. Venegas-Andraca, W. Cruz-Santos, C. McGeogh and M. Lanzagorta. &nbsp;A cross-disciplinary introduction to quantum annealing-based algorithms. Contemporary Physics 59(02), pp. 174--196 (2018).</p> <p dir="ltr">[2] &nbsp;R. Biswas et al. A NASA perspective on quantum computing. Parallel Computing</p> <p dir="ltr">64(C), pp. 81-98 (2017).</p> <p dir="ltr">[3] M. Schuld et al. Contemporary Physics 56:2, pp. 172-185 (2015)</p> <p dir="ltr">[4] J. Biamonte et al. Nature 549, pp. 195-202 (2017).</p> <p dir="ltr">[5] A. Aspuru-Guzik, R. Lindh, and M. Reiher. The Matter Simulation (R)evolution. American Chemical Society Cent. Sci. 4(2), pp. 144-152 (2018).</p> <p dir="ltr">[6] IBM Q Experience.<a href="https://quantumexperience.ng.bluemix.net/"> https://quantumexperience.ng.bluemix.net</a></p> <p dir="ltr">[7] D-Wave Systems: Quantum Computing.<a href="https://cloud.dwavesys.com/"> https://www.dwavesys.com/quantum-computing</a></p> <p dir="ltr">[8] Rigetti Computing.<a href="https://rigetti.com/"> https://rigetti.com</a></p> <p dir="ltr">[9] Microsoft Quantum. <a href="https://www.microsoft.com/en-us/quantum">https://www.microsoft.com/en-us/quantum</a></p> <p>[10] Google AI Quantum. <a href="https://ai.google/research/teams/applied-science/quantum-ai/">https://ai.google/research/teams/applied-science/quantum-ai</a> &nbsp;</p> </div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p><meta charset="utf-8" />Arturo Silva Ordaz (<a href="mailto:arturo.silva@quantumworks.io">arturo.silva@quantumworks.io</a>) es Ingeniero Físico por el Tecnológico de Monterrey, estudiante del doctorado en Ciencias de la Ingeniería por la misma institución y director general de la empresa Quantum Works.</p> <p>Salvador E. Venegas Andraca (<a href="mailto:salvador.venegas-andraca@keble.oxon.org">salvador.venegas-andraca@keble.oxon.org</a>) es profesor-investigador y director del grupo de investigación en Procesamiento Cuántico de la Información en el Tecnológico de Monterrey. Es pionero del cómputo cuántico en México y del procesamiento cuántico de imágenes. Desde 1993, es consultor y conferencista para la iniciativa privada y los tres niveles de gobierno en temas de computación cuántica, inteligencia artificial, transferencia de tecnología, sistemas electrónicos, tecnología computacional y propiedad intelectual.</p> </div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Tue, 15 Jan 2019 19:29:13 +0000 Ivett Sanchez 8515 at https://sg.com.mx https://sg.com.mx/revista/58/cuando-el-futuro-nos-alcance-en-que-podemos-utilizar-computadoras-cuanticas#comments Desarrollo y Simulación de Algoritmos Basados en Temple Cuántico https://sg.com.mx/revista/58/desarrollo-y-simulacion-de-algoritmos-basados-en-temple-cuantico <span class="field field--name-title field--type-string field--label-hidden">Desarrollo y Simulación de Algoritmos Basados en Temple Cuántico</span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-01/quantum2.jpg" width="600" height="400" alt="" loading="lazy" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/44582" lang="" about="/user/44582" typeof="schema:Person" property="schema:name" datatype="" class="username">Ivett Sanchez</a></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 01/15/2019 - 13:28</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/58" hreflang="zxx">SG #58</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/buzz/autores/william-de-la-cruz-de-los-santos" hreflang="zxx">William de la Cruz de los Santos</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>El algoritmo de Temple Cuántico (TC) —en inglés, quantum annealing— es uno de los paradigmas del cómputo cuántico que más aplicaciones ha encontrado desde el plegado de proteínas, lógica matemática, visión por computadoras, entre otras [1,2]. El TC se basa en las propiedades de la mecánica cuántica y hace uso del fenómeno físico de túnel cuántico para explorar el espacio de soluciones de un problema de optimización combinatorio [3].</p> <p><meta charset="utf-8" /></p> <p dir="ltr">Uno de los líderes en tecnología cuántica que han aprovechado el algoritmo de TC es la empresa canadiense D-Wave Systems [4], cuyas computadoras cuánticas actualmente son utilizadas por distintos laboratorios de alto perfil para abordar aplicaciones y estudios teóricos en áreas como: machine learning, exploración espacial, optimización combinatoria, biología, teoría de gráficas, entre otras.</p> <p dir="ltr">Los avances teóricos se han centrado en estudiar el comportamiento de la evolución del algoritmo de TC para acelerar el proceso de búsqueda de soluciones. Mientras que los avances experimentales y de aplicación se han enfocado en determinar cuáles problemas son más susceptibles de ser resueltos usando TC dadas las limitaciones de hardware cuántico actual.</p> <p dir="ltr">Recordemos que la unidad de procesamiento más pequeña en una computadora cuántica es el qubit. Un qubit, a diferencia de su contraparte clásica el bit, puede estar tanto en 0/1 como en una superposición entre ambos valores. En el caso del hardware cuántico de D-Wave, los qubits se encuentran interconectados en la llamada topología Chimera. La Figura 1 muestra la topología del procesador D-Wave One el cual tiene 128 qubits. En esta topología, para cualquier qubit q se le asocia un coeficiente h(q) que representa la magnitud de un campo magnético transversal y para cualquier pareja de qubits q1 y q2, se les asocia un coeficiente J(q1,q2) que representa la fuerza de acoplamiento entre q1 y q2. De esta manera, la programación de un procesador cuántico de D-Wave consiste en configurar los coeficientes h(q) y J(q1,q2) para cada qubit q y todas las parejas de qubits q1 y q2, respectivamente.</p> <img alt="1" data-entity-type="file" data-entity-uuid="8ca513c7-0bc5-4a62-b60f-decf1e9d0ba2" height="302" src="/sites/default/files/inline-images/unnamed.jpg" width="302" class="align-center" loading="lazy" /><p class="text-align-center" dir="ltr">Figura 1. Topologia del procesador cuantico D-Wave One.</p> <p dir="ltr">Una vez configurados los coeficientes h(q) y J(q1,q2), se lleva a cabo el proceso del algoritmo de TC, el cual hace evolucionar los estados de los qubits. Finalmente, se lleva a cabo una medición cuántica la cual hace que los estados de los qubits “colapsen” a estados clásicos 0/1. El argumento principal del TC es que si el tiempo de evolución del sistema cuántico es lo suficientemente largo, la energía final del sistema será la más baja, y la configuración final de los qubits representa una solución a un problema. La energía del sistema es la suma de los términos q*h(q) y q1*q2*J(q1,q2) para todos los qubits q y todas las parejas q1 y q2. Los tiempos de evolución que se pueden establecer en el hardware cuántico están entre 10 y 100 microsegundos. Dado que el proceso de medición cuántica es un evento probabilístico, se tienen que realizar varias ejecuciones del algoritmo TC con las mismas condiciones iniciales, y el resultado final se toma por votación.</p> <p dir="ltr">Consideremos cada una de las etapas en la solución de un problema de optimización usando el algoritmo de TC:</p> <ol><li dir="ltr"> <p dir="ltr">Un problema de interés en teoría de gráficas es el Máximo Conjunto Independiente (MCI). Una gráfica es una pareja G=(V,E) donde V={1,2,...,n} es un conjunto de vértices y E={e1,e2,...,em} es un conjunto de aristas o parejas de vértices (ver figura 2). Un subconjunto A contenido en V es independiente si para todo par de vértices i,j en A, la pareja {i,j} no forma una arista en E. Así, dada un grafica G=(V,E), el problema MCI consiste en encontrar el conjunto independiente A más grande en G.</p> </li> <li dir="ltr"> <p dir="ltr">Para representar de manera lógica el problema MCI asociamos variables booleanas xj a los vértices j tal que j (no) pertenece al conjunto A si xj = 1 (0) para j=1,...,n. Así, por cada posible combinación de valores para x1,...,xn se le asocia un conjunto A que consiste de los vértices j para los cuales xj=1 con j=1,...,n. La cardinalidad del conjunto A coincide con la suma x1 +...+ xn y A es independiente si se cumple que para toda arista {i,j} en E, el producto xi*xj = 0. De este modo, el problema MCI se puede ver como la minimización de una función de energía E(x1,...,xn) como se muestra en la Figura 2.</p> </li> <li dir="ltr"> <p dir="ltr">El hardware cuántico D-Wave se diseñó con el objetivo de minimizar funciones de la forma E(x1,...,xn) con términos lineales y por pares. La representación cuántica de la función E(x1,...,xn) consiste en encontrar una correspondencia entre los términos por pares con una o más parejas de qubits en la topología Chimera. La Figura 2 muestra una incrustación del problema en la topología Chimera.</p> </li> <li dir="ltr"> <p dir="ltr">Para la ejecución del algoritmo de TC se establece el tiempo de evolución ta y el número de iteraciones que se repetirá el proceso. Por cada iteración se obtiene como resultado un valor de energía y una configuración de los qubits involucrados en la representación del problema. Las soluciones de un algoritmo de TC se interpretan dependiendo del objetivo, ya sea obtener la mínima energía de la función E(x1,...,xn) o encontrar una configuración de los qubits tal que satisfagan una propiedad específica. Por ejemplo, para el ejemplo de la Figura 2, la mínima energía es de 4 y el número de veces que aparece es 781 de 1000 iteraciones. Por lo que la probabilidad de éxito del algoritmo es p=781/1000.</p> </li> </ol><img alt="2" data-entity-type="file" data-entity-uuid="198142df-d516-4a01-8d8f-a9facb9b0180" height="327" src="/sites/default/files/inline-images/unnamed%20%281%29.jpg" width="392" class="align-center" loading="lazy" /><p class="text-align-center" dir="ltr">Figura 2. Etapas para la solución de problemas usando el algoritmo de TC.</p> <p dir="ltr">Estas tecnologías cuánticas han propiciado un nicho de oportunidades en la investigación científica básica. Por ejemplo, algunas de las problemáticas en cada una de las etapas son las siguientes: (1) determinar a qué clase de problemas se pueden encontrar ventajas en la solución de problemas en comparación con los mejores algoritmos clásicos conocidos; (2) encontrar para cada problema de interés la mejor representación matemática con el menor número de variables lógicas; (3) obtener la representación física sobre la topología del hardware cuántico que requiera el menor número de recursos físicos; y (4) amplificar la probabilidad de éxito para encontrar soluciones a un problema dado usando el menor número de repeticiones.</p> <p dir="ltr">Referencias</p> <p dir="ltr">[1] Salvador E. Venegas-Andraca, William Cruz-Santos, Catherine McGeoch &amp; Marco Lanzagorta, A cross-disciplinary introduction to quantum annealing-based algorithms, Contemporary Physics, Vol. 59(2), pp. 174—197 (2018).</p> <p dir="ltr">[2] William Cruz-Santos, Salvador E. Venegas-Andraca &amp; Marco Lanzagorta, A QUBO formulation of the stereo matching problem for D-Wave quantum annealers, Entropy, Vol. 20(10), pp. 786 (2018).</p> <p dir="ltr">[3] Tadashi Kadowaki &amp; Hidetoshi Nishimori, Quantum annealing in the transverse Ising model, Physical Review E, Vol. 58(5), pp. 5355—5363 (1998).</p> <p dir="ltr">[4] <a href="https://www.dwavesys.com">https://www.dwavesys.com</a>  </p> <p dir="ltr">[5] Rupak Biswas et al., A NASA perspective on quantum computing: opportunities and challenges, arXiv:1704.04836v1 (2017).</p> <p dir="ltr">[6] Thomas E. Potok et al., A Study of Complex Deep Learning Networks on High Performance, Neuromorphic, and Quantum Computers, arXiv:1703.05364v2 (2017).</p> </div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p>El Dr William De la Cruz es profesor investigador en la Universidad Autónoma del Estado de México. Los intereses del Dr. De la Cruz son el desarrollo de algoritmos cuánticos para problemas NP-difíciles, óptica aplicada y visión por computadoras.</p> </div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Tue, 15 Jan 2019 19:28:30 +0000 Ivett Sanchez 8516 at https://sg.com.mx https://sg.com.mx/revista/58/desarrollo-y-simulacion-de-algoritmos-basados-en-temple-cuantico#comments Procesamiento Cuántico para Redes de Sensores https://sg.com.mx/revista/58/procesamiento-cuantico-para-redes-de-sensores <span class="field field--name-title field--type-string field--label-hidden">Procesamiento Cuántico para Redes de Sensores</span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-01/pexels-photo-373543.jpeg" width="2250" height="1500" alt="" loading="lazy" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/44582" lang="" about="/user/44582" typeof="schema:Person" property="schema:name" datatype="" class="username">Ivett Sanchez</a></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 01/15/2019 - 13:27</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/58" hreflang="zxx">SG #58</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/buzz/autores/marco-lanzagorta" hreflang="zxx">Marco Lanzagorta</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Uno de los mayores esfuerzos científicos en años recientes ha sido el control y manejo de fenómenos cuánticos para mejorar el desempeño de sistemas de comunicación y procesamiento de información. Más aún, el desarrollo de otros productos tecnológicos cuánticos como sensores y redes permite pensar en la construcción de sistemas robustos y con amplias capacidades, por ejemplo, la instalación de redes de sensores cuánticos y/o clásicos que transmitan información a computadoras cuánticas para la evaluación de escenarios complejos.</p> <p><meta charset="utf-8" /></p> <p dir="ltr">Los sensores que componen una red no necesariamente tienen que ser idénticos, en general puede ser un conjunto heterogéneo de aparatos de detección (por ejemplo, sensores acústicos, hidrológicos, ópticos, gravitacionales, y electromagnéticos son necesarios para establecer sin ambigüedad la presencia de un submarino o el lanzamiento de un misil). En la práctica, cada sensor lleva a cabo y reporta mediciones a muy alta frecuencia (~1,000 reportes por segundo).</p> <p dir="ltr">Consideremos un simple ejemplo: si tenemos N objetivos y M sensores en un tiempo de detección de 45 minutos (el tiempo aproximado de vuelo de un misil proveniente de Asia a los Estados Unidos), a una frecuencia de 1,000 reportes por segundo, el resultado es 45x103xMxNx60 datos con una incertidumbre 4-dimensional (tres espaciales y una temporal) diferente de cero. Cuando N=10 y M=20, estamos hablando de 5x107 datos. El problema de detección y seguimiento del misil se reduce a determinar el valor de N y encontrar las N trayectorias geométricas que óptimamente unen los cuerpos geométricos que describen la incertidumbre en cuatro dimensiones de cada una de las 5x107 mediciones (por lo general, un conjunto de elipsoides no alineadas) y satisfacen las leyes dinámicas del movimiento del blanco (en este caso, del movimiento parabólico en un campo gravitacional). Claramente, este es un problema computacional muy complejo.</p> <p dir="ltr">Las redes de sensores ofrecen un mejor desempeño a través del uso de algoritmos de fusión de datos que combinan la información de los nodos de la red para proveer información óptima del objetivo. De esta forma, el resultado producido por un algoritmo de fusión de datos es la información más exacta, completa, oportuna, y confiable que se tiene del objetivo.</p> <p dir="ltr">La fusión de datos y la computación cuántica son áreas muy activas de investigación científica y tecnológica. Sin embargo, al momento de escribir este artículo, no ha existido mucha interacción entre estas áreas científicas. Empero, es una idea natural el tratar de combinar estas dos áreas de investigación. De esta forma emerge el área de la “Fusión Cuántica de Datos” cuyo objetivo es el desarrollo de técnicas computacionales para su implantación en computadoras cuánticas, con el propósito de procesar información proveniente de redes heterogéneas de sensores. En este artículo describimos una taxonomía para clasificar las técnicas que se podrían utilizar para la fusión cuántica de datos.</p> <p dir="ltr">En general, uno necesitaría determinar: (1) cuál es la mejor combinación de sensores clásicos y cuánticos para obtener la información requerida del objeto de estudio; y (2) cómo asociar y fusionar la información no-lineal de sensores clásicos y cuánticos de tal manera que reduzcan las incertidumbres en las variables bajo análisis.</p> <p dir="ltr">Con esto en mente podemos identificar las cuatro técnicas posibles para llevar a cabo la fusión de datos provenientes de redes de sensores heterogéneas. Y a su vez, estas técnicas caracterizan cada uno de los grupos taxonómicos que clasifican la fusión cuántica de datos.</p> <p dir="ltr">La primer técnica y más básica es el uso de técnicas tradicionales clásicas de fusión de datos aplicadas a la información clásica obtenida por la red de sensores. En el caso de sensores cuánticos, esto implica realizar la medición de los qubits que describen el estado del sensor para obtener bits clásicos que puedan ser combinados con los bits producidos por los sensores clásicos. Podemos llamar esta técnica Fusión Tradicional de Datos (ver figura 1).</p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-e12e124d-7fff-df91-8ff3-41cbe42a35fe"><img height="217" src="https://lh6.googleusercontent.com/Gt2vCtZMJiQtfgsjrnI2MgA4-5K-94kZzR11IGpsC-VmttsD9htXwNkiwpA10e3Z1m6amPkYZz6CjLjYMCeI4pGsmwB7a9Ej1nJZX6kymbnuhGht-QlFrj8A_IjdNgaxgmuvyd9P" width="518" /></b></p> <p class="text-align-center" dir="ltr">Figura 1. Fusión tradicional de datos</p> <p dir="ltr">Ya comentamos que la mayoría de los algoritmos para la fusión tradicional de datos requieren vastos recursos computacionales para procesar grandes cantidades de información. Así que la siguiente técnica, a la que podríamos llamar Fusión Cuántica de Datos (figura 2), consistiría en utilizar una computadora cuántica para acelerar el proceso clásico de fusión de información. &nbsp;Por ejemplo, en el US Naval Research Laboratory (NRL) hemos desarrollado algoritmos cuánticos para la fusión de datos aplicada a la información clásica proveniente de una red de sensores heterogéneos aplicada a la defensa de misiles y al seguimiento de objetivos subacuáticos con sonar pasivo. Resultados teóricos y de simulación muestran que estos algoritmos cuánticos ofrecen una ventaja cuadrática en el número de pasos computacionales para la detección y seguimiento óptimos de un número masivo de blancos de geometría arbitraria.</p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-e12e124d-7fff-df91-8ff3-41cbe42a35fe"><img height="223" src="https://lh4.googleusercontent.com/hgd3ILUbUxr4grPksy6ilKrhfSLx1hcjpwJeMuXC1tluAVRiDrscH-Ku0xllDMC1Zszvz6zrcrrmCs6uZDRJvmJ3-MQPYU7qA98x3jX5ci4N8t3EJF9jaBcIfofjkhwR-uAGvqxx" width="532" /></b></p> <p class="text-align-center" dir="ltr">Figura 2. Fusión cuántica de datos</p> <p dir="ltr">Recordemos que los sensores cuánticos son dispositivos que usan algún fenómeno cuántico para que, bajo ciertas circunstancias, se incremente su exactitud, resolución, y sensibilidad en comparación a sus contrapartes clásicas. El problema es que al medir la información sensada, se “aterriza” esta a bits tradicionales para transmitirla a un centro de procesamiento de información. Es así que podemos diseñar otra técnica de fusión de datos en la que se considere el estado de cada sensor cuántico antes de la medición. Esto es, el estado de cada sensor después del proceso de detección y antes de su medición, estado que es representado por qubits. Estos qubits pueden entonces ser enviados a una computadora cuántica (por ejemplo usando teletransportacion cuántica), y así el estado cuántico final de los sensores estará representado con qubits dentro de una computadora cuántica. De esta forma no se pierde información cuántica en el proceso de medición. Esta técnica puede ser llamada Fusión de Datos Cuánticos (figura 3).</p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-e12e124d-7fff-df91-8ff3-41cbe42a35fe"><img height="333" src="https://lh4.googleusercontent.com/ix1Sw6UFbVFYOsshQT_objYfi104QjHuIxWfItVTJMhsICGIvZoyaFEWUmFQ9UPfE3SDT2PYo4dtTzyv5VoItRQF_5Dnyw04J90YRz20pmt5LwwBqwR8U-CYlvIAcUtDzWEh78Q5" width="516" /></b></p> <p class="text-align-center" dir="ltr">Figura 3. Fusión de datos cuánticos</p> <p dir="ltr">Si bien las tres técnicas anteriores emergen de forma natural al considerar la intersección entre las redes de sensores y la computación cuántica, la cuarta y última técnica es una idea completamente nueva. En este caso consideremos los qubits que describen el estado de los sensores como si fueran variables cuánticas dinámicas en una computación cuántica. Esto es, en vez de representar el estado final de los sensores después del proceso de detección, los qubits representan el estado intermedio de los sensores que sigue evolucionando debido a su interacción con el medio ambiente. Cada sensor cuántico de la red actúa como qubits lógicos que son parte de una computadora cuántica extendida y que pueden ser operados dinámicamente por el procesador cuántico. De esta forma emerge el concepto de Fusión Extendida de Datos Cuánticos (figura 4). En estos algoritmos, el medio ambiente que transforma el estado de los sensores cuánticos es equivalente a un oráculo computacional. En este modelo, estamos usando el medio ambiente como un recurso computacional.</p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-e12e124d-7fff-df91-8ff3-41cbe42a35fe"><img height="315" src="https://lh5.googleusercontent.com/ulYVPW_P_z8mI9Ln-3VV-ueKRSLNayxSmpA9wGVBnEcOf0EeJNTXsSGJeBYDHze8HqGV7Qm4tbbH-mYDMF-ISzg6WOjteUeSY8lUFPtQxjMaQrkMqxUfD-EGvKdtOm8cGQt9Tcf4" width="527" /></b></p> <p class="text-align-center" dir="ltr">Figura 4. Fusión extendida de datos cuánticos</p> <p dir="ltr">En el NRL hemos desarrollado algoritmos de fusión extendida de datos cuánticos para el caso de una red de gravímetros cuánticos. En este caso, uno puede imaginarse un procesador cuántico con este tipo de qubits como si fuera un arreglo de pequeños gravímetros cuánticos muy sensibles cuyo estado puede ser manipulado independientemente usando compuertas cuánticas. Entonces, el campo gravitacional va a afectar el estado del procesador cuántico. Como consecuencia, en principio uno podría determinar las características del campo gravitacional observando su efecto en los qubits del procesador cuántico. En consecuencia, la ejecución de nuestro algoritmo de fusión extendida de datos cuánticos convierte a la computadora cuántica en un gravímetro.</p> <p dir="ltr">Resultados numéricos de nuestros modelos teóricos muestran que, si uno tuviera acceso a una computadora cuántica universal perfecta con 94 qubits, el gravímetro resultante sería equivalente al mejor gravímetro conocido hoy en día (gravímetro de interferencia atómica). Sin embargo, como recurso de medición, la sensibilidad del gravímetro cuántico crece exponencialmente con el número de qubits. Así, con 100 qubits en una computadora cuántica perfecta uno tendría una sensibilidad teórica 100 veces mayor que el gravímetro de interferencia atómica. Como tal, esta técnica pudiera tener importantes aplicaciones navales como la detección de submarinos y la navegación submarina usando mapas gravitacionales.</p> <p dir="ltr">De esta forma podemos concluir que las computadoras cuánticas pudieran ser utilizadas para acelerar el proceso de fusión de datos, el cual es un área de tremenda importancia comercial y militar. Más aún, permitiendo la manipulación del entrelazamiento de la red de sensores cuánticos uno podría desarrollar tecnologías realmente revolucionarias para la detección y medición de campos gravitacionales y electromagnéticos de muy baja intensidad.</p> </div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p><meta charset="utf-8" />El Dr. Marco Lanzagorta es científico adscrito al Laboratorio de Investigaciones de la Marina de los Estados Unidos de América. Antes de esta responsabilidad, el Dr Lanzagorta fue director del Grupo de Tecnologías Cuánticas de ITT Exelis (hoy Harris Corporation) y llevó a cabo actividades de investigación científica en el CERN así como en el International Center for Theoretical Physics.</p> </div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Tue, 15 Jan 2019 19:27:32 +0000 Ivett Sanchez 8517 at https://sg.com.mx https://sg.com.mx/revista/58/procesamiento-cuantico-para-redes-de-sensores#comments Criptografía Post-cuántica en Sistemas con Recursos Limitados https://sg.com.mx/revista/58/criptografia-post-cuantica-en-sistemas-con-recursos-limitados <span class="field field--name-title field--type-string field--label-hidden">Criptografía Post-cuántica en Sistemas con Recursos Limitados</span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-01/quantum3.jpg" width="800" height="522" alt="" loading="lazy" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/44582" lang="" about="/user/44582" typeof="schema:Person" property="schema:name" datatype="" class="username">Ivett Sanchez</a></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 01/15/2019 - 13:26</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/58" hreflang="zxx">SG #58</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/buzz/autores/alfonso-de-abiega" hreflang="zxx">Alfonso de Abiega</a></li> <li><a href="/buzz/autores/kevin-delgado-vargas" hreflang="zxx">Kevin Delgado Vargas</a></li> <li><a href="/buzz/autores/gina-gallegos-garcia" hreflang="zxx">Gina Gallegos-García.</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Las soluciones de tipo “Internet de las cosas” (IoT) cada vez son más comunes tanto en empresas como hogares. Dichas soluciones frecuentemente manejan información sensible, por lo que es deseable que manejen un canal de comunicación cifrado. Sin embargo, así como la tecnología tiende al cambio, la seguridad de la información también está presentando cambios, y el cómputo cuántico presenta una amenaza significativa. Dada su naturaleza, una computadora cuántica puede realizar millones de operaciones en paralelo y fácilmente descifrar información protegida con criptografía tradicional.</p> <p><meta charset="utf-8" /></p> <p dir="ltr">Una solución ante este problema es el uso de algoritmos post-cuánticos, capaces de soportar ataques de ordenadores cuánticos. El uso de este tipo de algoritmos ya es relativamente común en el cómputo empresarial y móvil. Sin embargo, las soluciones IoT típicamente utilizan dispositivos con recursos limitados, que no necesariamente cuentan con la capacidad necesaria para ejecutar estas cargas de trabajo.</p> <p dir="ltr">Ante esto, los autores han realizado una investigación para estudiar la viabilidad y desempeño de algoritmos de criptografía post-cuántica dentro de sistemas con recursos limitados. En este artículo se presenta la evaluación del desempeño de un algoritmo que preserva el servicio de integridad dentro de sistemas con procesadores ARM.</p> <h3 dir="ltr">Un poco de historia</h3> <p dir="ltr">Históricamente hablando, la criptografía puede clasificarse en 4 etapas: clásica, moderna, cuántica y post-cuántica. El primer uso reconocido de la criptografía data de hace cerca de 4 mil años, en unos jeroglíficos no estándar encontrados en una tumba egipcia. La criptografía clásica, de una u otra manera continuó usándose conforme la civilización humana continuó su evolución.</p> <p dir="ltr">La segunda guerra mundial marca un hito importante para la criptografía. Ante la necesidad de proteger los mensajes enviados a las tropas, aviones y submarinos a distancia, se realizaron grandes avances tanto en la construcción de máquinas criptográficas (ej. Enigma) como en el análisis para ingeniería inversa y construcción de máquinas capaces de descifrar dichos mensajes.</p> <p dir="ltr">La siguiente gran revolución aparece a finales de los años 60 con el desarrollo de la criptografía asimétrica donde se utiliza una llave conocida por el público para cifrar los mensajes y otra llave privada para descifrarlos.</p> <p dir="ltr">En los años 70’s se tienen las primeras ideas relacionadas con la criptografía cuántica, destacando los algoritmos de Shor y Grover. Sin embargo, fue hasta los 80’s cuando se muestran las primeras publicaciones de nuevos protocolos que basaban su seguridad en los principios de la mecánica cuántica —como el de incertidumbre o el de superposición— utilizando láseres para emitir información en un fotón.</p> <p dir="ltr">Cuando los algoritmos de la criptografía de llave pública empiezan a verse comprometidos por el cómputo cuántico, surge la criptografía post-cuántica, que hace referencia a los algoritmos diseñados para resistir ataques de computadoras cuánticas. En ella se aprecian varias ramas que se diferencían por la forma en cómo operan, siendo estas: algoritmos basados en rejillas, algoritmos basados en ecuaciones multivariables, algoritmos basados en curvas elípticas isogeneas supersingulares, algoritmos basados en hashes, y algoritmos basados en códigos.</p> <p dir="ltr">Desde el punto de vista del uso y desempeño de este tipo de algoritmos, se ha explorado su ejecución en sistemas de propósito específico en entornos controlados, como lo son: los FPGA, AVR y ASIC, por mencionar algunos, dejando pendiente un análisis del comportamiento y desempeño en sistemas de recurso limitado, de gama media y baja, como lo son: Raspberry Pi, Beaglebone o Banana Pro con arquitectura ARM. De ahí que los antecedentes relacionados con este trabajo exhiben trabajos con algoritmos post-cuánticos que podrían dividirse en: ejecuciones en dispositivos FPGAs, en dispositivos de uso específico y trabajos de algoritmos post-cuánticos en la arquitectura ARM, los cuales radican en cifrado, firmas digitales y acuerdos de llave, dejando abierta la posibilidad de explorar la primitiva de hash, enfocada al servicio de integridad, así como su comportamiento en sistemas con recursos limitados.</p> <h3 dir="ltr">Desempeño de un algoritmo post-cuántico para el servicio de integridad</h3> <p dir="ltr">La función hash SHA-3 es el último miembro de la familia de estándares Secure Hash Algorithm, cuyo propósito es sustituir las aplicaciones actuales de su predecesor SHA-2 en caso de ser necesario, puesto que esta mejora la solidez del algoritmo hash.</p> <p dir="ltr">La familia de las funciones SHA-3 es capaz de enfrentar ataques realizados por computadoras cuánticas, destacando entre ellos: el uso del algoritmo de Grover, ataques de preimagen, de segunda preimagen y de resistencia a colisiones, así como el ataque de cumpleaños. Esto, dado que la seguridad proporcionada por el algoritmo SHA-3 ante ataques cuánticos recae en las grandes salidas de datos que este genera, puesto que está comprobado matemáticamente que es resistente a la colisión cuántica. Hablando en términos de bits, la seguridad que genera cada una de sus variantes, es del mismo tamaño de bits que la salida, en los ataques a preimagen y 2da preimagen, y a la mitad de los bits en ataques de resistencia a colisiones.</p> <p dir="ltr">Desde el punto de vista de la codificación, a la fecha se han desarrollado códigos en distintos lenguajes para utilizar las fortalezas que presenta esta familia. De hecho, el proyecto de investigación "Open Quantum Safe", ha puesto al alcance de la comunidad una biblioteca de funciones con dos líneas de trabajo principales. La primera línea consiste en el desarrollo y mantenimiento de liboqs, una biblioteca de código abierto en C que implementa algoritmos criptográficos resistentes a ataques cuánticos. La segunda línea consiste en el prototipado de integraciones en protocolos y aplicaciones comunes, tales como la biblioteca OpenSSL.</p> <p dir="ltr">Para la investigación descrita en este artículo, se adecuó liboqs para poder usarla en procesadores con arquitectura ARM. Se modificó un constructor para que pudiera hacer uso de la función SHA-3 y de todas las opciones que brinda la biblioteca. El programa diseñado tiene como propósito la obtención de las mediciones en los tiempos de procesamiento. Esto, considerando el tiempo que tardan tanto el embebido como la computadora personal para resolver las operaciones de las funciones hash de la familia de SHA-3.</p> <h3 dir="ltr">Ejecución en sistemas con recursos limitados</h3> <p dir="ltr">Para las pruebas de desempeño, se ejecutó cada uno de los miembros de la familia SHA-3 con salidas de 224, 256, 384 y 512 bits. Esto, con la finalidad de obtener una comparativa de los tiempos de procesamiento que se tienen entre el sistema embebido Raspberry Pi 1 modelo B, con un procesador de un solo núcleo, 700 MHz de velocidad y 256 MB de memoria RAM y una arquitectura x64. Además, se observó el desempeño en las funciones de salida variable SHAKE128 y SHAKE256, con salidas de tamaño 512, 1024, 2048, 4096 y 8192 bits, respectivamente. Para finalizar, se comparó el desempeño que mostraba la función hash SHA-3 al ejecutarse en el sistema embebido y las funciones hash antecesoras, SHA-1 y SHA-2.</p> <p dir="ltr">Sin embargo, el reto presentado al estudiar el desempeño del algoritmo SHA-3 se presentó al querer ejecutarlo en un dispositivo de poder limitado de cómputo, ya que el embebido en cuestión fue un sistema Raspberry Pi modelo B, lo que no impidió la ejecución del algoritmo aunque tardara tiempo considerable. Dicho tiempo de respuesta, mejoró con el uso de un sistema embebido con un poco más de poder de cómputo, pero de la misma familia. El embebido escogido posteriormente fue un Raspberry Pi 3 con un chipset Broadcom BCM2837, procesador ARMv8 de cuatro núcleos a 1.2GHz y 1GB de memoria RAM. Con estas nuevas características en el sistema embebido, se pudo ejecutar igual de rápido que en una computadora personal.</p> <p dir="ltr">Es decir, el algoritmo post-cuántico de la familia SHA-3 se pudo ejecutar en dispositivos de recurso limitado con una velocidad de respuesta lenta, lo cual mejoró con el aumento en la capacidad del cómputo.</p> <h3 dir="ltr">Resultados</h3> <p dir="ltr">Los resultados de la primera prueba se observan en la Tabla 1, en donde la entrada a la función SHA-3 es un archivo que contiene un millón de veces el mismo carácter, y dejan observar los tiempos de ejecución en milisegundos para el procesamiento de las funciones SHA-3 con salidas de longitud 224, 256, 384 y 512, lo cual se muestra en la Tabla 1. También, la Tabla 2 muestra los valores resultantes para las funciones de salida SHAKE. De igual forma el valor de entrada de la función es un archivo que contiene un millón de caracteres.</p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-82ffcdef-7fff-ab83-98e8-6418d98fdd9f"><img height="162" src="https://lh3.googleusercontent.com/r0-XosgZ4hmx_7lXg3sbySUmxQcT2mmv-2EnE-TLkuBwOgV9jAQTz1IM6R_ERSP6G8m0Zom9NTWVvI7Psf6vf5RPfRBOEVwUK-CSZahu_tbONUbFnbsAmIl1fLxijRx_hAZGlsAE" width="484" /></b></p> <p class="text-align-center" dir="ltr">Tabla 1. Resultados con SHA-3</p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-82ffcdef-7fff-ab83-98e8-6418d98fdd9f"><img height="299" src="https://lh5.googleusercontent.com/vb_RqgX8w3oaN2errDYmfO_XnP6Watduk6aKU1cxTZVjtslM_xDbpJhUrjYGx0RuOMnTWu6D9jCva201JHlFAt0P49lHB0byHNKSouadW6ww405xjtJuVJnRXeNgz-K0kSa2LU_3" width="476" /></b></p> <p class="text-align-center" dir="ltr">Tabla 2. Resultados con SHAKE</p> <p dir="ltr">Para ambas Tablas la primera columna muestra las diferentes longitudes de salida del algoritmo de SHA-3 y SHAKE, respectivamente. La segunda columna expone los tiempos de ejecución, dentro de una PC, de cada una de las opciones de longitud de SHA-3. La tercera columna presenta los tiempos de ejecución, dentro del embebido Raspberry Pi de primera generación. Por último, la cuarta columna expone la relación que define cuántas veces es más lento el sistema embebido en comparación con un ordenador personal.</p> <p dir="ltr">La Tabla 3 muestra la comparación, en tiempos de ejecución, entre las tres diferentes familias del algoritmo SHA dentro del embebido Raspberry Pi de primera generación. La primera columna muestra las diferentes longitudes de salida para las funciones SHA. La segunda columna muestra los resultados obtenidos de las familias SHA-1 y SHA-2 con cada una de las longitudes de salida. La tercera columna expone los tiempos de ejecución obtenidos de la familia de SHA-3 con las mismas longitudes de salida utilizadas para SHA-1 y SHA-2. Por último, la cuarta columna muestra la relación existente entre los tiempos de ejecución de SHA-1 y SHA-2 contra SHA-3, exponiendo el tiempo que tarda más la ejecución de la familia SHA-3 comparada con sus antecesores.</p> <p class="text-align-center" dir="ltr"><b id="docs-internal-guid-82ffcdef-7fff-ab83-98e8-6418d98fdd9f"><img height="187" src="https://lh3.googleusercontent.com/S34w4Ug9xgnARkh-4I8NTZg5E1JmU46bCfNkM0EeXzzjvvtwAq3jyLnZeJkupmvkg2P6oNYU83OO6UeBnex4Pte7Gq4DhfqhlS57LSGI_Pyv4qKtk3cvSHIaORLzydKOJ8Q5_PcC" width="497" /></b></p> <p class="text-align-center" dir="ltr">Tabla 3. Resultados de comparación.</p> <p dir="ltr">De ahí, que los parámetros de salida de estas pruebas, permitieron determinar, por medio de un promedio de tiempos, qué tan posible o no es la ejecución de la familia de funciones SHA-3 dentro de sistemas embebidos con recursos limitados.</p> <h3 dir="ltr">Conclusión</h3> <p dir="ltr">Los resultados obtenidos al ejecutar las funciones SHA-3 con salidas 224, 256, 384 y 512, dejan ver que el tiempo utilizado para ejecutar el proceso promedia entre uno y tres segundos, por lo que, a nivel computacional, es posible ejecutar una función hash post-cuántica dentro de un embebido de recursos limitados.</p> <p dir="ltr">Los valores promedio obtenidos con los resultados dejan ver que sin importar la longitud de la salida obtenida, el dispositivo podrá tener en promedio, el mismo resultado.</p> <p dir="ltr">Los valores obtenidos en la prueba tres, dejaron ver que una función post-cuántica puede ser ejecutada de manera exitosa dentro de los embebidos de bajos recursos computacionales, dado que al hacer la comparación con las familias previas SHA-1 y SHA-2, se puede observar que los tiempos de ejecución de la función SHA-3 no poseen un comportamiento tan distante de sus antecesoras, por lo que es posible utilizar e implementar aplicaciones que utilicen algoritmos post-cuánticos en vez de sus antecesoras.</p> <h3 dir="ltr">Agradecimientos</h3> <p dir="ltr">Los autores agradecen al Instituto Politécnico Nacional dado que este trabajo fue financiado a través del proyecto SIP 20180505 y SIP 1917.</p> <p>&nbsp;</p> <p dir="ltr">Referencias</p> <p dir="ltr">[1] Mahmoud, Moustafa, et.al. (2017). A power resistant FPGA implementation of NTRUEncrypt.USA:IEEE.</p> <p dir="ltr">[2] Basu Roy, Debapriya, et.al. (2018). Minimalistic perspective to public key implementations on FPGA. USA:IEEE.</p> <p dir="ltr">[3] Dai, Wei, et.al. (2016). NTRU modular lattice signature scheme on Cuda CPUs. USA:IEEE.</p> <p dir="ltr">[4] Chang, Yun-An, et.al. (2014). Post-Quantum SSL/TLS for emdedded systems. USA:IEEE.</p> <p dir="ltr">[5] Jalali, Amir, et.al. (2017). Supersingular isogeny Diffie-Hellman key exchange on 64-bit ARM. USA:IEEE.</p> <p dir="ltr">[6] Streit, Silvan, et.al. (2017). Post-Quantum key exchange on ARMv8: A New Hope for NEON made simple. USA:IEEE.</p> <p dir="ltr">[7] Ghani, Aziz, et.al. (2013). Hash MD5 Function Implementation at 8-bit Microcontroller. Indonesia:IEEE.</p> <p dir="ltr">[8] Kahri, Fatma, et al. (2013). An FPGA implementation of the SHA-3: The BLAKE Hash Function. Túnez:IEEE.</p> <p dir="ltr">[9] Kahri, Fatma, et al. (2015). Efficient FPGA Hardware Implementation of Secure Hash Function SHA-256/Blake-256. Túnez:IEEE.</p> <p dir="ltr">[10] F Dworkin, Morris J. "SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions". Federal Inf. Process. Stds. (NIST</p> </div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p><meta charset="utf-8" />Alfonso de Abiega, Gina Gallegos-García y Kevin Delgado Vargas son profesores investigadores en la Escuela Superior de Ingeniería Mecánica y Eléctrica del lnstituto Politécnico Nacional, Unidad Culhuacán</p> </div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> <h2 class="title">Comentarios</h2> <article role="article" data-comment-user-id="57350" id="comment-149" about="/comment/149" typeof="schema:Comment" class="comment js-comment clearfix"> <span class="hidden" data-comment-timestamp="1633178365"></span> <header> </header> <footer class="comment__meta"> <span>Submitted by<span rel="schema:author"><a title="View user profile." href="/user/57350" lang="" about="/user/57350" typeof="schema:Person" property="schema:name" datatype="" class="username">Beauvais</a></span> on Sat, 10/02/2021 - 07:39 <span property="schema:dateCreated" content="2021-10-02T12:39:25+00:00" class="rdf-meta hidden"></span> </span> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/149#comment-149" class="permalink" rel="bookmark" hreflang="en">I am very enjoyed for this blog</a></h3> <div property="schema:text" class="text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p><span><span><span><span><span><span>I am very enjoyed for this blog. Its an informative topic. It help me very much to solve some problems. Its opportunity are so fantastic and working style so speedy <strong><a href="https://twitter.com/drvivekcheba">FOR MORE DETAILS</a></strong></span></span></span></span></span></span><span><span><span><span><span><span>.</span></span></span></span></span></span></p></div> </div> <nav><drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=149&amp;1=default&amp;2=en&amp;3=" token="OZelAavOx2szdpHj15yTngtu3ijyw3PVi4PnhUA9lEs"></drupal-render-placeholder></nav> </article> <nav class="pager" role="navigation" aria-labelledby="pagination-heading--2"> <h4 id="pagination-heading--2" class="visually-hidden">Pagination</h4> <ul class="pager__items js-pager__items"> <li class="pager__item is-active"> <a href="/taxonomy/term/6879/feed?page=0%2C0" title="Current page"> <span class="visually-hidden"> Current page </span>1</a> </li> <li class="pager__item"> <a href="/taxonomy/term/6879/feed?page=1%2C0" title="Go to page 2"> <span class="visually-hidden"> Page </span>2</a> </li> <li class="pager__item pager__item--next"> <a href="/taxonomy/term/6879/feed?page=1%2C0" title="Go to next page" rel="next"> <span class="visually-hidden">Next page</span> <span aria-hidden="true">Next ›</span> </a> </li> <li class="pager__item pager__item--last"> <a href="/taxonomy/term/6879/feed?page=1%2C0" title="Go to last page"> <span class="visually-hidden">Last page</span> <span aria-hidden="true">Last »</span> </a> </li> </ul> </nav> </section> Tue, 15 Jan 2019 19:26:14 +0000 Ivett Sanchez 8518 at https://sg.com.mx https://sg.com.mx/revista/58/criptografia-post-cuantica-en-sistemas-con-recursos-limitados#comments 50 Años de la Ingeniería de Software Problemas, Logros, Tendencias y Retos https://sg.com.mx/revista/58/50-anos-de-la-ingenieria-de-software-problemas-logros-tendencias-y-retos <span class="field field--name-title field--type-string field--label-hidden">50 Años de la Ingeniería de Software Problemas, Logros, Tendencias y Retos</span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-01/HannaOktaba.jpg" width="300" height="152" alt="" loading="lazy" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/44582" lang="" about="/user/44582" typeof="schema:Person" property="schema:name" datatype="" class="username">Ivett Sanchez</a></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 01/15/2019 - 13:15</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/58" hreflang="zxx">SG #58</a></li> </ul> </div> <div class="field field--name-field-seccion field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix"> <ul class='links field__items'> <li><a href="/revista/secciones/tejiendo-nuestra-red" hreflang="und">Tejiendo nuestra red</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/buzz/autores/hanna-oktaba" hreflang="und">Hanna Oktaba</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p><em>Nota: Esta columna está basada en el contenido de la conferencia que ofrecí en CONISOFT’18, 24-26 de octubre de 2018, en San Luis Potosí.</em></p> <p>Dediqué mi columna anterior a los 60 años de la computación en México, iniciados por la llegada de la primera computadora a la UNAM. Sin embargo, este no es el único aniversario redondo que nuestra comunidad debe festejar. Este año también se cumplen los 50 años del nacimiento de la Ingeniería de Software como disciplina.</p> <p>Se reconoce a Margaret Hamilton, quien dirigió el desarrollo del sistema de navegación de la nave espacial Apolo por haber acuñado en 1965 el término “ingeniería de software”. Posteriormente el término también fue utilizado por personas como Anthony Oettinger (presidente de la ACM) en 1966, y Friedrich Ludwic Bauer (Comité de Ciencias de la OTAN) en 1967. Sin embargo, el nacimiento formal de esta disciplina se ubica en octubre de 1968, cuando el Comité de Ciencia de la OTAN, preocupado por lo que nombró como la Crisis de Software, convocó a los mejores científicos computacionales del momento a una reunión en Alemania.</p> <p>A continuación les presento un breve resumen de los principales problemas que identificaron los asistentes, con citas del reporte de la reunión [1] en cursiva, a las cuales agrego mi visión personal de los mayores logros alcanzados durante estos 50 años.</p> <h2>Problemas y Logros</h2> <h3>Proceso de desarrollo de software</h3> <p>Problemas en 1968</p> <ul> <li>Falta una comprensión más completa del proceso de diseño del programa.</li> <li>Construimos sistemas como los hermanos Wright construyeron aviones: “construye todo, empújalo por el precipicio, déjalo caer y vuelve a empezar.”</li> </ul> <p>Logros hasta 2018</p> <p>Durante los últimos 50 años hemos transitado por diferentes modelos: cascada, espiral, iterativo-incremental o ágil tipo Scrum. Hemos generado múltiples estándares para apoyar el desarrollo de software: CMM/CMMI, TSP/PSP, ISO/IEC 12207, 29110, 15504, MoProSoft, mps.Br o ESSENCE. Hemos integrado el cuerpo de conocimiento de la Ingeniería de Software (SWEBOK) y hemos generado el Manifiesto por el Desarrollo Ágil de Software, que está cambiando la forma de trabajar y las relaciones humanas.</p> <p>A pesar de todos estos avances, tengo la sensación de que, en muchas ocasiones, seguimos imitando a los hermanos Wright. ¿Ustedes qué opinan?</p> <h3>Calidad de software</h3> <p>Problemas en 1968</p> <ul> <li>Dificultades para lograr una fiabilidad suficiente en los sistemas, que cada vez son más integrados en las actividades centrales de la sociedad.</li> <li>Particularmente alarmante son las fallas, aparentemente inevitables de un software, que pueden impactar una cuestión de vida o muerte.</li> </ul> <p>Logros hasta 2018</p> <p>La calidad de software tiene dos vertientes: del proceso y del producto. En la primera hemos avanzado introduciendo conceptos y técnicas de verificación y validación. El aseguramiento de calidad y la mejora de procesos también son un avance.</p> <p>Con respecto a la calidad del producto tenemos un primer gran acuerdo en forma en el estándar ISO/IEC 25000 para identificar las características de calidad de software y su posible medición. Sin embargo, mi impresión es que para lograr la calidad nos enfocamos más en los ciclos de pruebas (testing) y sus respectivas correcciones, que en la prevención de defectos. ¿Ustedes qué opinan?</p> <h3>Costos</h3> <p>Problemas en 1968</p> <ul> <li>T.J. Watson dijo que OS / 360 le costó a IBM más de 50 millones de dólares al año durante su preparación, y una inversión de al menos 5,000 años-hombre.</li> <li>Los costos de desarrollo del software estaban integrados con los costos de desarrollo del hardware. No se cuantificaba el valor y costo del software como tal.</li> </ul> <p>Logros hasta 2018</p> <p>Para justificar el costo del software tuvimos que empezar a medir el tamaño del software. El primer intento fue usar el número de líneas de código (LOCs), pero fue criticado porque software con la misma funcionalidad puede tener diferentes tamaños LOCs dependiendo del lenguaje e incluso estilo de programación. Luego tuvimos una propuesta más sensata con los Puntos de Función ajustados a ciertos parámetros de complejidad, que eventualmente se convirtieron en el estándar ISO/IEC 14143, llamado de forma estelar “Puntos Funcionales Cosmic” :)</p> <p>El problema de intangibilidad de software sigue causando estragos en la estimación de costos. La forma más popular es definir el precio en términos del costo por hora/hombre, pero hay gran discrepancia sobre cuál es la tarifa justa. Todavía es común encontrarse con quienes cuestionan por qué cuesta tanto el tiempo de las personas que desarrollan software, “si solo usan su cabeza y una computadora”. ¿Ustedes qué opinan?</p> <h3>Gestión</h3> <p>Problemas en 1968</p> <ul> <li>Dificultades de cumplir fechas y especificaciones.</li> <li>Dificultad para evaluar el avance real de un proyecto.</li> <li>La gerencia de programación continuará mereciendo su mala reputación por la falta de efectividad en cuanto a costos y cronogramas.</li> </ul> <p>Logros hasta 2018</p> <p>Nos hemos apoyado en otras disciplinas. Por ejemplo, aprovechamos el cuerpo de conocimiento de la administración de proyectos PMBoK generado por el PMI. Su última publicación, el Agile Practice Guide, muestra su esfuerzo de estar al tanto de las tendencias. A pesar de estos avances, me temo que “la gerencia de programación continuará mereciendo su mala reputación” ¿Ustedes qué opinan?.</p> <h3>Profesión</h3> <p>Problemas en 1968</p> <ul> <li>La ingeniería de software se encuentra en una etapa muy rudimentaria en comparación de otras ramas establecidas de la ingeniería.</li> <li>Confrontaciones con ingenieros de hardware porque ellos son industriales y nosotros somos artesanos.</li> </ul> <p>Logros hasta 2018</p> <p>Para mejorar la profesionalización se han creado las carreras de ingeniería de software. La primera en el mundo fue fundada en 1996 en Rochester Institute of Technology por un profesor mexicano, el Dr. Fernando Náveda. La primera en México es la de la Universidad Autónoma de Yucatán en 2004.</p> <p>También se han propuesto varios esquemas de certificación profesional como el Certified Software Development Professional (CSDP) de IEEE o el mexicano Estándar Técnico de Competencias para el Desarrollo de Software: Ingeniero de Software del NYCE (2014). Que yo sepa, ninguno ha tenido gran demanda. En mi opinión es porque el mercado laboral es relativamente inmaduro y prefiere las certificaciones de alguna habilidad técnica que profesional.</p> <p>Los códigos de ética profesional de los desarrolladores de software tampoco han tenido gran difusión. A finales de los 1990s se creó el Código de Ética y Práctica Profesional de Ingeniería de Software de IEEE/ACM y recientemente (2018) se publicó el ACM Code of Ethics and Professional Conduct. Ambos merecen ser revisados y discutidos. Si se tomaran en cuenta nos beneficiaremos todos, pero si NO…nos amolaremos, también todos.</p> <p>La profesionalización de los Ingenieros de Software ha tenido un avance significativo, pero creo que todavía nos falta elevar la conciencia del impacto que la calidad de nuestro trabajo tiene en la sociedad. ¿Ustedes qué opinan?.</p> <p>Regresando a la preocupación general por la Crisis de Software del año 1968, a pesar de todos los avances y logros mencionados la situación no ha cambiado mucho. Según los reportes de Standish Chaos Group, el porcentaje de proyectos exitosos se mantiene de manera constante en aproximadamente 30%. Esto es buena noticia para ustedes, tienen mucho que innovar :).</p> <h2>El Futuro</h2> <p>El futuro de la ingeniería de software es muy desafiante. Para fundamentarlo, presento un muy breve resumen de algunas tendencias y retos abordados en la conferencia “The Future of Software Engineering” [2].</p> <h3>Tendencias</h3> <p>La computación en la nube reduce costos de arranque, y los ambientes de desarrollo en la nube facilitan el desarrollo de software remoto.</p> <p>Se reduce el uso de computadoras personales a favor de los dispositivos móviles, pero su variedad es abrumadora.</p> <p>Los usuarios son móviles, nómadas y "siempre conectados”.</p> <p>Han surgido nuevos tipos de aplicaciones: Smart City, Internet de las Cosas (IoT), Realidad aumentada/virtual.</p> <p>Inteligencia Artificial: robótica, machine learning, procesamiento de lenguaje, reconocimiento de imágenes …ya no es ciencia ficción.</p> <p>Los sistemas ya casi no se hacen desde cero, evolucionan a sistemas complejos.</p> <h3>Retos</h3> <p>Estas tendencias tendrán que modificar la forma de abordar problemas y dar soluciones en la Ingeniería de Software. Sus próximos retos son los siguientes:</p> <p>Se requiere el cambio profundo y radical en los métodos y técnicas utilizados para concebir, diseñar, desarrollar, probar y desplegar software.</p> <p>Escalabilidad de procesos de software necesaria por la complejidad de productos y exigencia de “time to market”.</p> <p>La calidad y, sobre todo, la seguridad del software se están volviendo aún más críticas.</p> <p>El número de ambientes/plataformas objetivo que un desarrollador debe considerar para desarrollo de software está aumentando significativamente.</p> <p>El software debe diseñarse para minimizar el uso de los recursos de hardware y de comunicación y, en consecuencia, reducir el consumo de energía (Green IT).</p> <h3>Conclusión</h3> <p>Para concluir esta columna les quiero recordar mi lema:</p> <p>“La calidad de nuestras vidas depende de la calidad del software, y la calidad del software depende de la calidad de sus creadores y de las organizaciones que los respaldan.”</p> <p>Referencias</p> <ol> <li>P. Naur, B. Randell. Software Engineering: Report of a conference sponsored by the NATO Science Committee. Garmisch, Germany, 1968. <a href="https://sg1.run/xq">https://sg1.run/xq</a></li> <li>A.Fugetta y E. Di Nitto, Proceedings on the Future of Software Engineering (FOSE). Hyderabad, India, 2014. <a href="https://sg1.run/xr">https://sg1.run/xr</a></li> </ol> </div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p>La Dra. Hanna Oktaba es profesora de la UNAM y su objetivo principal es generar conocimiento a través de la creación y promoción de estándares.</p> </div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> <div class="field field--name-field-tags field--type-entity-reference field--label-above field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label">Tags</h3> <ul class='links field__items'> <li><a href="/sg4w" hreflang="und">SG4W</a></li> </ul> </div> Tue, 15 Jan 2019 19:15:39 +0000 Ivett Sanchez 8509 at https://sg.com.mx https://sg.com.mx/revista/58/50-anos-de-la-ingenieria-de-software-problemas-logros-tendencias-y-retos#comments