Iron Ruby
Iron Ruby
Se lleva a cabo en la parte superior de la Dynamic Language Runtime (DLR), una biblioteca que se ejecutan en la parte superior de la Common Language Infrastructure que proporciona el tipado dinmico y el modo de envo dinmico, entre otras cosas, para lenguajes dinmicos. Historia El 30 de abril de 2007, en MIX 2007, Microsoft anunci IronRuby, que utiliza el mismo nombre del proyecto IronRuby Wilco Bauwer con permiso. [3] Se ha previsto para ser lanzado al pblico en OSCON 2007. [4] El 23 de julio de 2007, como haba prometido, John Lam y el equipo de diseo de DLR present la versin pre-alpha del compilador IronRuby en OSCON. Tambin anunci una lnea de tiempo rpido para una mayor integracin de IronRuby en la comunidad de cdigo abierto. [5] El 31 de agosto de 2007, John Lam y el equipo de diseo de DLR liberado el cdigo en su pre-alpha en la etapa RubyForge. [6] El cdigo fuente ha dejado de ser actualizada peridicamente por el equipo central de Microsoft (pero no para todos los check-in ). El equipo tambin no acepta contribuciones de la comunidad para el ncleo de Dynamic Language Runtime biblioteca, al menos por ahora. [7] El 24 de julio de 2008, el equipo IronRuby lanzado la versin binaria primera alpha, en lnea con OSCON 2008. [8] El 19 de noviembre de 2008, se lanz una versin alfa segundos. El equipo trabaj activamente para apoyar a los carriles de IronRuby. [9] [10] Algunas de las pruebas funcionales rieles empiezan a correr, pero un montn de trabajo todava se necesita hacer para ser capaz de ejecutar Rails en un entorno de produccin. [11] El 21 de mayo de 2009, lanzaron la versin 0.5 en conjunto con RailsConf 2009. Con esta versin, IronRuby ahora se pueden ejecutar algunos carriles aplicaciones, pero no an en un entorno de produccin. [12] La versin 0.9 fue anunciado como OSCON 2009. [13] Esta versin mejorada de rendimiento. [14] La versin 1.0 RC1 estuvo disponible el 20 de noviembre de 2009. [15] La versin 1.0 estuvo disponible el 12 de abril de 2010, en dos versiones diferentes:
El preferido, que corre por encima de. NET 4.0. Una versin con ms funciones limitadas, que se ejecuta en la parte superior de. NET 2.0. Esta versin es la nica compatible con Mono [16]
El plan del equipo IronRuby para apoyar Ruby 1.8.6 slo para nuevas versiones 1.0, 1.9 y la versin slo para las prximas versiones 1.x, saltando soporte para Ruby 1.8.7. [17] [18]
IronRuby es tambin la integracin de RubySpec , que es un proyecto para escribir una especificacin completa, ejecutable para el lenguaje de programacin Ruby. El GIT IronRuby repo incluye una copia de las pruebas RubySpec, incluyendo el marco de pruebas MSpec. [19] A finales de 2010 Microsoft que uno de los dos nicos desarrolladores del equipo central de ir. apoyo Mono IronRuby puede funcionar tambin en Mono como lo hace en Microsoft Common Language Runtime (CLR), [20] , pero como el equipo IronRuby slo pone a prueba con el CLR en el de Windows ., [21] no se puede construir sobre Mono en funcin de la construccin . NET interoperabilidad La interoperabilidad entre las clases IronRuby y regular . NET Framework clases es muy limitado por el momento debido a que muchas clases de Ruby no lo son. NET. [25] Sin embargo, un mejor soporte para lenguajes dinmicos en 4.0. NET puede aumentar la interoperabilidad en el futuro.
Silverlight IronRuby es compatible con Silverlight . Puede ser utilizado como un motor de scripting en el navegador al igual que el Javascript motor. [27] scripts IronRuby se pasan como simples del lado del cliente con Javascript scripts en <script> -tags. Es entonces posible modificar incrustado XAML marcado. La tecnologa detrs de esto se le llama Gestalt. / / Script DLR iniciacin. <Script src = "http://gestalt.ironruby.net/dlr-latest.js" type = "text / javascript"> / / Script de cliente pasa a IronRuby y Silverlight. <Script type = "text / ruby"> ventana. alert ("Hola desde Ruby") </ Script> Las mismas obras de IronPython . Licencia IronRuby fue publicado anteriormente con la licencia pblica de Microsoft , que es OSI certificada por BSD licencia estilo. El 16 de julio de 2010, Microsoft re-IronRuby licencia junto con el DLR bajo la licencia Apache, versin 2.0
Para leer ms
Shay Friedman, "IronRuby Unleashed", de Sam, 2010, ISBN 0672330784 Ivan Porto Carrero y Burmister Adn ", IronRuby en Accin", Manning, 2010, ISBN 1933988614
IBAL.
En un lenguaje de programacin racional, un programa specifes una situacin que se presenta por un agente, la evaluacin del programa asciende a la informtica de lo que un agente racional sera creer o hacer en la situacin. Programacin racional combina las ventajas ventajas de las representaciones declarativas con las caractersticas de los lenguajes de programacin tales como los sistemas de la modularidad, la composicionalidad, y el tipo. Un diseador del sistema no es necesario reinventar los algoritmos para decidir qu debe hacer el sistema en cada posible situacin que se encuentra. Es suficiente para describir de forma declarativa la situacin, y dejar los algoritmos de inferencia sofisticadas para los ejecutores de la lengua. Uno puede pensar en Prolog como un lenguaje de programacin racional, centrado en componer las creencias de un agente que utilice la deduccin lgica. En los ltimos aos ha habido un cambio en la AI a las especificaciones de comportamiento racional en trminos de la probabilidad y la teora de la decisin. Por tanto, existe la necesidad de un natural, expre- SIVE, de propsito general y fcil de lenguaje de programacin para los modelos probabilsticos. Este chapterpresents Ibal, un lenguaje probabilstico de programacin racional. Ibal, pro- anunci "a ojo", es sinnimo de Language Integrated agente bayesiano. Como su nombre indica, integra los diferentes aspectos de la probabilidad basada en el comportamiento racional, incluyendo razonamiento probabilstico cin, estimacin de parmetros y de la decisin bayesiana tericomaximizacin de la utilidad. Este enfoque chapterwill en la representacin probabilstica y capacidades de razonamiento de Ibal, y no discutir el aprendizaje y la toma de decisiones aspectos. Lenguajes de alto nivel probabilstico por lo general han cado en dos categoras. La primera categora, basado en normas [Poole (1993), Ngo y Haddawy (1996); Kersting y de Raedt (2000)]. En este enfoque la idea general es asociar a la lgica programacin de reglas como las de los factores de ruido. Una regla describe cmo un trmino de primer orden 2 El diseo e implementacin de Ibal: Lengua probabilstico de Propsito General depende de otros trminos. Dada una consulta especfica y un conjunto de observaciones, un bayesiano la red se puede construir una descripcin de la distribucin conjunta sobre todos los de primer orden variables en el dominio. La segunda categora del lenguaje se basa en objetos [Koller y Pfeffer (1997, 1998); Laskey y Mahoney (1997)]. En este enfoque, el mundo se describe en trminos de los objetos y las relaciones entre ellos. Los objetos tienen atributos, y el modelo probabilstico describe cmo los atributos de un objeto depende de otros atributos del objeto mismo y en los atributos de los objetos relacionados. El modelo especifica una distribucin de probabilidad conjunta sobre los atributos de todos los objetos en el dominio.
Este chapterexplores un enfoque diferente para el diseo de alto nivel probabilstico languas. Ibal es un lenguaje funcional para la especificacin de los modelos probabilsticos. Modelos en la mirada Ibal como los programas en un lenguaje de programacin funcional. En el funcio- enfoque institucional, un modelo es una descripcin de un proceso computacional. El proceso de estocsticamente genera un valor y el significado del modelo es la distribucin sobre el valor generado por el proceso. El enfoque funcional, que se recoge en el Ibal, tiene una serie de atractivas caractersticas. En primer lugar, es una forma muy natural para describir un modelo probabilstico. Para construir un modelo, simplemente se debe proporcionar una descripcin de la forma en que funciona el mundo. Al describir el proceso generador de forma explcita es la forma ms directa de describir un modelo generativo. En segundo lugar, Ibal es muy expresivo. Se basa en la parte superior de un lenguaje de programacin Turing-completo, de modo que cada modelo generativo que razonablemente se puede describir de cmputo puede ser descrito en Ibal. En tercer lugar, por basando idiomas probabilstica modelos en lenguajes de programacin, podemos para disfrutar de los beneficios de un lenguaje de programacin, tales como un sistema de tipo y el tipo inferencia. Por otra parte, basndose en la tecnologa de los lenguajes funcionales, que son capaces de utilizar todas sus caractersticas, como la abstraccin lambda y de orden superior funciones. Adems, el uso de un marco de programacin funcional ofrece un elegante y lenguaje uniforme con el que describir todos los aspectos de un modelo. Todos los niveles de un modelo puede ser descrito en el lenguaje, incluyendo las dependencias probabilsticas de bajo nivel y la estructura de alto nivel. Esto est en contraste con los enfoques basados en reglas, en reglas de combinacin que describe cmo las diferentes reglas encajan entre s. Tambin se encuentra en A diferencia de los lenguajes basados en objetos, en el que la estructura de bajo nivel est representado el uso de tablas de probabilidad condicional y un idioma diferente se utiliza para la alta nivel de la estructura. Adems, personas con movilidad reducida usar la sintaxis especial para manejar la incertidumbre sobre la estructura relacional. Esto significa que cada uno de estas caractersticas debe ser tratado como un caso especial, con algoritmos especiales de fin de inferencia. En las caractersticas de Ibal, especiales se codifican utilizando la sintaxis del lenguaje, y el algoritmo de inferencia de propsito general se aplica para su manejo. Ibal es un lenguaje ideal de prototipado rpido para el desarrollo de nuevos modelos probabilsticos- ELS. Varios ejemplos son siempre muestran lo fcil que es para expresar los modelos de la idioma. Estos incluyen modelos bien conocidos, as como los nuevos modelos. Ibal se ha implementado, y hecha pblica en http:www.eecs.harvard.edu/avi/IBAL.
1.2 El idioma Ibal 3 El chapterbegins mediante la presentacin de la lengua Ibal. El foco inicial se encuentra en la caractersticas que permiten la descripcin de los generadores de modelos probabilsticos. Despus de presentar ejemplos, el chapterpresents la semntica declarativa del Ibal. En la aplicacin de un lenguaje muy expresivo el razonamiento, la cuestin de deducircia viene a la vanguardia. Porque Ibal es capaz de expresar muchas diferencias
marcos diferentes, su algoritmo de inferencia se debe generalizar los algoritmos de los marcos. Si, por ejemplo, una red bayesiana se codifica en Ibal, el Ibal algoritmo de inferencia debe realizar las mismas operaciones que una red bayesiana en cia algoritmo. Este chapterdescribes el algoritmo de inferencia Ibal y muestra la forma en que se generaliza muchos de los marcos existentes, incluyendo las redes bayesianas, se escondi- den modelos de Markov, y gramticas libres de contexto estocstico. Siete de desiderata un algoritmo de inferencia de propsito general se presentan, y se muestra cmo es Ibal algoritmo satisface todas ellas simultneamente
1.2 El idioma Ibal Ibal es un idioma rico. En primer lugar, describir la esencia de la lengua que se utiliza para construccin de generadores de modelos probabilsticos. Entonces hablamos de cmo codificar las observaciones en los modelos. Finalmente, presentamos un poco de azcar sintctica que hace que el idioma ms fcil y ms natural de utilizar 1.2.1 Expresiones bsicas La unidad bsica de los programas Ibal es la expresin. Una expresin describe un experimento estocstico que genera un valor. Al igual que en una programacin regular idioma una expresin describe un clculo que produce un valor, por lo que en Ibal una expresin describe un clculo que estocsticamente produce un valor. Ibal proporciona construcciones para la definicin de expresiones bsicas, y de las expresiones que componen para producir expresiones ms complejas. En esta seccin ofrecemos una significado intuitivo de expresiones Ibal en trminos de experimentos estocsticos. Nosotros proporcionar semntica precisa en la Seccin 1.4. El ncleo del Ibal incluye los siguientes tipo de expresiones. Las expresiones constantes Una expresin constante es un literal de uno de los incorporados tipos primitivos, Boolean, Integer y el smbolo. El tipo de smbolo contiene simblico constantes, lo que puede ser cualquier valor de cadena. Por ejemplo, 6 cierto, y 'hola todos expresiones constantes. Una expresin constante representa el experimento que siempre produce el valor dado. Las expresiones condicionales, si la expresin e 1 entonces e 2 ms e 3 ofrece condiciones eleccin internacional entre dos resultados posibles. Se corresponde con el experimento en que e 1 se evala, entonces, si el valor de e 1 era cierto e, 2 se evala, de lo contrario e 3 se evala. Eleccin estocstica La expresin dist [p 1 : E 1 , ..., P n : E n ] Especifica una eleccin estocstica entre las diferentes posibilidades e 1 ,..., E n . Cada uno de los p yo es el probabilidad de elegir el mensaje correspondiente yo . La expresin corresponde a la experimento en el que la rama i-sima se elige con probabilidad p yo , Y luego el expresin e yo se evala.
Ibal vinculante variable permite que las variables a ser nombrado y asignado un valor, y continuacin, hace referencia ms adelante. Esto se puede lograr utilizando una expresin de la forma x = e 1 en e 2 . Aqu x es el nombre de la variable que se define, e 1 es su definicin, y el correo 2 es la expresin en la que x puede aparecer. La forma ms sencilla de entender un que es la expresin que se corresponde con el experimento en el que e 1 se evala, y luego e 2 se evala, con el resultado de e 1 se utiliza all donde x aparece. La resultado de toda la expresin que es el resultado de e 2 . Ibal lambda abstraccin proporciona una abstraccin lambda, lo que permite la definicin de las funciones. La expresin lambda x 1 ,..., X n - E> representa la funcin que x toma los argumentos 1 ,..., X n cuyo cuerpo es el correo. Las definiciones de funciones tambin puede ser recursiva, utilizando la sintaxis de fijar f (x 1 ,..., X n ) -> E. Aqu f es el nombre de la funcin que se est definiendo, y el cuerpo e se puede referir a f. Ambas expresiones lambda y fijar corresponden a experimentos en los que siempre produce el valor funcional definido por la expresin. El valor funcional es un cierre que consta de los nombres de argumento, un cuerpo de la funcin, y un entorno en el que evaluar las variables libres. La funcin de aplicacin de expresin e 0 (E 1 ,..., E n ) Representa la funcin aplicacin. Se corresponde con el experimento en el que e 0 se evala, y su funcionamiento resultado se aplica a los resultados de e 1 ,..., E n . Tenga en cuenta que puede haber una incertidumbre en e 0 , La expresin que define la funcin que deben aplicarse. Tupla de la construccin y el acceso a la expresin <x 1 : E 1 ,..., X n : E n > Con- estructuras con componentes de una tupla llamada x 1 ,..., X n . Se corresponde con la expe- entorno en el que cada uno de los e yo se evala y se asigna a la componente x yo. Una vez una tupla se ha construido, un componente se puede acceder usando la notacin de puntos. El ex expresin se evala la expresin e, y los extractos de la componente x resultado. La comparacin de expresin e 1 == E 2 se corresponde con el experimento en el que e 1 y el correo 2 se evalan. El resultado es verdadero si los valores de e 1 y el correo 2 son los mismos, de lo contrario es falso Ejemplo 1.1 Es importante tener en cuenta que en una expresin de la forma x = e 1 en e 2 la variable x se le asigna un valor especfico en el experimento, cualquier decisin estocstica hecho, mientras que evaluar e 1 se resuelven, y el resultado se asigna a x. Por ejemplo, considere Sea z = dist [0,5: true, 0,5: false] en Z&Z El valor de z est decidido a ser verdadera o falsa, y el mismo valor que se utiliza en los dos lugares en los que aparece en z z y z. Por lo tanto toda la expresin se evala que ocurre con probabilidad 0. 5 no, 0. 25, que es lo que el resultado sera si z se reevaluado cada vez que aparece. Por lo tanto la construccin que ofrece una manera de hacer
diferentes partes de una expresin probabilstica dependiente, por lo que los hace hablar de la misma variable. Ejemplo 1.2 Este ejemplo ilustra el uso de una funcin de orden superior. Comienza con la definicin dos funciones, una que corresponde a el lanzamiento de una moneda al aire y una descripcin de un cara o cruz de una moneda sesgada. A continuacin, define una funcin de orden superior, cuyo valor de retorno es una de las dos primeras funciones. Esto se corresponde con el acto de decidir qu tipo de moneda para tirar. A continuacin, se define una variable llamada c, cuyo valor es la funcin de regular o parcial. A continuacin, se definen dos variables x e y de ser diferente aplicaciones de la funcin contenida en el c. Las variables x e y son condicionalmente independientes entre s, dado el valor de c. Tenga en cuenta por la forma en que en este ejemplo las funciones se llevan a cero argumentos. que justo lambda = () -> dist [0,5: 'cabezas, 0,5: "colas] en que sesgada = lambda () -> dist [0,9: 'cabezas, 0,1: "colas] en que recoger = lambda () -> dist [0,5: justo, 0,5: sesgada] en Sea C = recoger () en x = c () en y = c () en <x:x, y:y> 1.2.2 Observaciones La seccin anterior present las estructuras bsicas para describir generativa problemas modelos abilistic. Utilizando las construcciones anteriores, se puede describir cualquier expe-estocstica iment generativa que produce valores. El lenguaje que se presenta hasta el momento se puede expresar muchos de los modelos comunes, tales como las redes bayesianas, probabilsticos relacionales mod- ELS, modelos ocultos de Markov, las redes bayesianas dinmicas y estocsticas libres de contexto gramticas. Todos estos modelos son generativos en la naturaleza. La riqueza del modelo es codificados en la forma en que los valores se generan. Ibal tambin proporciona la capacidad para describir los modelos condicionales, en el que la genera- distribucin de probabilidad TIV est condicionada a las observaciones que se cumplan determinadas. Ibal consigue al permitir que las observaciones que se codifica de forma explcita en un modelo, en cualquier punto. Una observacin sirve para condicionar el modelo en la observacin de que cierto. Una observacin tiene la sintaxis general obs x = v e en donde x es una variable, v es un valor y el correo es una expresin. Su significado es el mismo e expresin, salvo que el valor de la variable x est condicionada a ser igual a v. La variable x debe tener ha definido anteriormente, como parte de una expresin let
1.2.3 Azcar sintctico Adems de las estructuras bsicas descritas anteriormente, Ibal ofrece una buena cantidad de sintcticas. El azcar no aumenta el poder expresivo de la lengua, pero hace que sea mucho ms fcil trabajar con. El azcar sintctico se presenta aqu, porque va a ser utilizado en muchos de los ejemplos ms adelante. La sintaxis que se extiende para hacer ms fcil para definir funciones. La sintaxis f (x 1 ,..., X n ) = E es equivalente a que f = f f (x 1 ,..., X n ) = E. Hasta ahora, toda construccin Ibal ha sido una expresin. De hecho, todo en Ibal se puede escribir como una expresin, y la presentacin de todo lo que simplifica las expresiones la presentacin. Un programa Ibal real, sin embargo, tambin contiene definiciones. Un bloque de es una pieza de cdigo Ibal consiste en una secuencia de definicin de variables. Ejemplo 1.4 Por ejemplo, podemos reescribir el ejemplo utilizando las definiciones de las monedas. justo () = dist [0,5: 'cabezas, 0,5: "colas] sesgada () = dist [0,9: 'cabezas, 0,1: "colas] recoger () = dist [0,5: justo, 0,5: sesgada] c pick = () x = c () y = c () El valor de este bloque es una tupla que contiene un componente para cada variable definida en el bloque, es decir, justo, parcial, pico, c, x e y. Bernoulli y uniforme variables aleatorias son tan comunes que una notacin especial que es creado para ellos. La expresin de la moneda es la abreviatura de dist [: true, 1 - : ] falso. El uniforme de la expresin n es la abreviatura de dist [ 1 n : 0 ,..., 1 n : N - 1]. Ibal proporciona a los operadores bsicos para trabajar con valores. Estos incluyen lgica operadores para trabajar con valores booleanos y operadores aritmticos para entero valores. Ibal tambin proporciona un operador de igualdad que las pruebas de cualquiera de los dos valores de la igualdad. Notacin de operadores es equivalente a la aplicacin de la funcin, cuando la autoridad las funciones se construyen in Notacin de puntos se puede utilizar para hacer referencia a los componentes anidados de variables. Por ejemplo, xab significa que el componente denominado b del componente denominado una de las variables llamado x. Esta notacin puede aparecer en cualquier lugar de una variable aparece. Por ejemplo, en una sola observacin puede decir obs xa = 'true en y. Esto equivale a decir Sea z = xa en obs z = 'true en y. Los patrones pueden ser usados para coincidir grupos de valores. Un patrn puede ser un valor atmico (booleano, entero o fuerte), que coincide consigo mismo; * el patrn especial, que coincide con algn valor; una variable, que coincide con algn valor, la unin de la variable a el valor coincidente en el proceso; una tupla de los patrones, lo que coincide con algn valor tupla tal que cada componente patrn coincide con el valor del componente correspondiente. Por ejemplo, el patrn <2, x, y> valor coincide con <2, es cierto, 'h>, vinculante y de 'h en el proceso. Un patrn puede aparecer en una observacin. Por ejemplo,
obs = x <2, x, y> en 'las verdaderas condiciones del experimento sobre el valor de x correspondiente el patrn. Los patrones tambin aparecen en las expresiones de caso, lo que permite el clculo de la rama en funcin del valor de una variable. La sintaxis general de las expresiones es el caso caso e 0 de # P 1 : E 1 ... # P n : E n donde los p yo son los patrones y el correo yo son expresiones. El significado, en trminos de una experimento estocstico, es comenzar por evaluar e 0 . Entonces su valor se corresponde con cada uno de los patrones, a su vez. Si el valor coincide con p 1 , El resultado del experimento es el resultado de e 1 . Si el valor no coincide con p 1 a travs de p i-1 y que coincide con p yo , Entonces e yo es el resultado. Se trata de un error por el valor de no coincidir con ningn patrn. A expresin case puede ser reescrita como una serie de expresiones if anidadas. La expresin case es til para describir las tablas de probabilidad condicional que se utilizados en las redes bayesianas. En este caso, la expresin e 0 es una tupla formada por los padres de los nodos, cada uno de los patrones de p yo coincide con un conjunto especfico de valores de los padres, y la expresin correspondiente e yo es la distribucin condicional sobre el nodo dados los valores de los padres. Tambin es posible definir un patrn que coincide cada vez que un subconjunto de las variables toma valores especificados, independientemente de los valores de otras variables. Este patrn se puede utilizar para definir tablas de probabilidad condicional con independencia del contexto, en el que slo algunos de los padres son importantes en ciertas circunstancias, dependiendo de los valores de otros padres. Adems de las tuplas, Ibal proporciona tipos de datos algebraicos (TDA) para la creacinde datos estructurados. Un TAD es un tipo de datos con varias versiones. Cada variante tiene un etiqueta y un conjunto de campos. ADT son muy tiles en la definicin de tipos de datos recursivos como como listas y rboles. Por ejemplo, el tipo de lista tiene dos variantes. La primera es nula y no tiene campos. El segundo es Pros y tiene un campo que representa la cabeza de la lista y un campo adicional que representa el resto de la lista