What are the goals of F#?
One way of looking at it is that the purpose of F# is to solve all of the 7 major problems described in Wadler's classic paper Why no one uses functional languages: Libraries, Portability, Availability, Packagability, Tools, Training and Popularity. Of these, F# solves the issues of libraries (by immediately giving high-quality, no-wrapper access to hundreds of .NET libraries), portability (the .NET bytecode is portable, e.g. the Mono project provides an implementation for many platforms), packagability (.NET assemblies are an excellent packaging mechanism) and tools (.NET tools for other languages nearly always work with F# as well). The remaining issues are partly solved by the fact that F# has a core design similar to that of OCaml, a popular functional language implementation for which a good amount of training material is available, and also that huge amounts of excellent training material for the .NET platform is available on the web.
Descubrimientos de una inteligencia artificial que supera el test de Turing
On the Internet, everybody knows you're a chatbot.
Buscar en Mind w/o Soul
martes, octubre 23, 2007
F#: el lenguaje funcional de Microsoft
Metaprogramación HOWTO
Tutorial de uso de macros para generación automática de código, usando el lenguaje Nemerle (un derivado funcional de C# con licencia BSD).
Macros - Nemerle Homepage
You can think about macros as of a system of compile-time transformations and automatic generation of code with regard to some rules. It can be used either to automate manipulations performed on similar data-types and fragments of code or to add syntax shortcuts to the language, optimize and make some computations safer by moving them from runtime to compile-time.
The idea of making simple inline operations on the code comes from preprocessor macros, which many languages (especially C, C++) have contained since early times of compiler design. We are following them in the direction of much more powerful, and at the same time more secure (type-safe) solutions like Haskell Template Meta-programming.
lunes, octubre 22, 2007
Programando con Ranges (en vez de iterators)
Módulo de la librería C++ Boost, para hacer programación abstracta usando rangos en vez de colecciones.
Range Concepts
Range Concepts
A Range is a concept similar to the STL Container concept. A Range provides iterators for accessing a half-open range [first,one_past_last) of elements and provides information about the number of elements in the Range. However, a Range has fewer requirements than a Container.
The motivation for the Range concept is that there are many useful Container-like types that do not meet the full requirements of Container, and many algorithms that can be written with this reduced set of requirements. In particular, a Range does not necessarily
* own the elements that can be accessed through it,
* have copy semantics,
Wiki avanzado de Patrones de diseño
Wiki de Extreme Programming, patrones de diseño y disciplinas avanzadas de lenguajes de programación (POO, Aspect Oriented...)
Generative Programming
Generative Programming
Boost: librería avanzada de C++
Librería de código abierto compatible GPL, con componentes avanzados de algoritmos y de sistema.
Boost C++ Libraries - Wikipedia
Boost C++ Libraries - Wikipedia
The Boost C++ Libraries are a collection of peer-reviewed, open source libraries that extend the functionality of C++. Most of the libraries are licensed under the Boost Software License, designed to allow Boost to be used with both open and closed source projects. Many of Boost's founders are on the C++ standard committee
C++ FAQ Lite
Una FAQ avanzada sobre el lenguaje C++. Explica cuándo y por qué usar técnicas complejas de este lenguaje, y los problemas más frecuentes.
C++ FAQ LITE
C++ FAQ LITE
C++ FAQ LITE — Frequently Asked Questions
Tipografías artísticas en el navegador
Un módulo flash para permitir tipografías arbitrarias en páginas web. Es accesibe, y con usabilidad relativamente buena (para lo que cabría esperar).
Mike Davidson - sIFR
Mike Davidson - sIFR
sIFR 2.0: Rich Accessible Typography for the Masses
April 27, 2005
Over the last several months, a small group of web developers and designers have
Arte de papel
Cuadros hechos de papel.
Beautiful Paper Art
Beautiful Paper Art
Beautiful Paper Art
14th October 2007
Peter Callesen, an extremely talented artist who cut beautiful masterpiece using a flat piece of paper. This is truly awesome.
Comics con mensaje
Dos webcomics con cargas de profundidad, uno en inglés y otro en argentino.
The Perry Bible Fellowship
LANACION.com - Humor
The Perry Bible Fellowship
Eggnancy
LANACION.com - Humor
viernes, octubre 19, 2007
El dinero no da la felicidad... si tienes bastante
Demostrado mediante investigación científica: tienen más impacto la salud, las relaciones sociales y el estar a gusto con lo que haces, que el total de tu cuenta bancaria.
Mind Hacks: The relationship between money and happiness
Mind Hacks: The relationship between money and happiness
If a nation wants to increase its population's sense of well-being, says Veenhoven, it should make "less investment in economic growth and more in policies that promote good governance, liberties, democracy, trust and public safety."
La evolución en contraintuitiva
Evolution and Wisdom of Crowds
I am convinced that just as often, the cause and effect is reversed: people hold onto their fundamentalist religious beliefs because evolution by natural selection -- the strongest argument against an Old Testament-type creator -- is so counter-intuitive to so many.
I arrive at this conclusion in a somewhat roundabout way. I have long been fascinated with systems that tap into the "wisdom of crowds" -- systems that, in fact, have much in common with Darwinian evolution. Such systems doubtfully conflict with anyone's religion, and yet, I see the same sort of resistance to them as I see to evolution. The arguments against them are remarkably similar.
jueves, octubre 18, 2007
Juegos modernos en 2D
Juegos Conversacionales - Interactive Fiction, y juegos modernos en 2d
Slashdot | Who Says 2D Gaming is Dead?
Slashdot | Who Says 2D Gaming is Dead?
Hmm, let me be the 10%... Shit games? Have you played some of the 'classics' of the new wave of IFs? Things like Photopia, All Things Devours, Slouching Towards Bedlam, Metamorphoses, Shade or Vespers? Or whatever the latest IF competition is going to yield?
Seriously, these things are worth your time. Not as big and time-consuming as the old Infocom classics, I agree. But they do what they have to do (entertain you for a few hours) and the price is right. Damn better than most of the commercial games these days.
miércoles, octubre 17, 2007
Videojuego: Portal (version Flash)
Puzzle games - Portal: The Flash Version - Walkthrough, comments and more Free Web Games at FreeGamesNews.
Portal: The Flash VersionPortal: The Flash Version
Portal: TFV Forum | We Create Stuff | Valve's Portal
Programación - libros online sobre informática avanzada y Logo
Libros online gratuitos, sobre Logo y sobre conceptos avanzados de teoría de computación
HomePage for Brian Harvey (bh@cs.Berkeley.EDU) Now FREE for personal use: The second edition of Computer Science Logo Style, a three-volume series intended mainly for teenagers and their teachers, or for adults who aren't professional programmers. You can look at the tables of contents and complete downloadable PDFs and browsable HTML versions of
HomePage for Brian Harvey (bh@cs.Berkeley.EDU) Now FREE for personal use: The second edition of Computer Science Logo Style, a three-volume series intended mainly for teenagers and their teachers, or for adults who aren't professional programmers. You can look at the tables of contents and complete downloadable PDFs and browsable HTML versions of
- Symbolic Computing, a Logo programming text that concentrates on natural language processing rather than the graphics most people associate with Logo.
- Advanced Techniques, in which discussions of more advanced Logo features alternate with sample projects using those features, with commentary on the structure and style of each.
- Beyond Programming, brief introductions to six college-level computer science topics.
- 1. Automata Theory
(PDF)
(HTML)- 2. Discrete Mathematics
(PDF)
(HTML)- 3. Algorithms and Data Structures
(PDF)
(HTML)- 4. Programming Language Design
(PDF)
(HTML)- 5. Programming Language Implementation
(PDF)
(HTML)- 6. Artificial Intelligence
(PDF)
(HTML)
Si Google estuviera diseñado para Google
¿Y si Google diseñara su portada haciendo SEO (Search Engine Optimization - optimización de contenidos para subir en el ranking de buscadores)?
Google
martes, octubre 16, 2007
Get Deb - Poner Ubuntu al dia
Actualizar Ubuntu con programas más recientes que los de la última versión
Acerca de Getdeb
Acerca de Getdeb
a actual política oficial de actualizaciones de los paquetes en Ubuntu (descrita aquí) está limitada a la corrección de errores críticos, lo que significa que no se actualizan los programas aunque no haya una correción importante de errores o si se ha mejorado algún aspecto del programa. Esta es una buena prática para fines de estabilidad especialmente si estas planeando usar Ubuntu a nivel empresarial pero esto tambien significa que hasta la siguiente versión de la distribución no podrás acceder a las últimas versiones de los programas instalados en tu sistema.
Usuarios con experiencia y desarrolladores serán capaces de compilarlos e instalarlos desde el código fuente pero los usuarios sin experiencia que desearan probar las últimas versiones tendrán que comprender y aprender el complicado proceso de compilación, especialmente si se usan dependencias externas o librerias de desarrollo.
Esta política tambien afecta a los usuarios que precisen de una aplicación que no estuviera disponible en los repositoriEl Proyecto
Para superar las limitaciones descritas, el nuevo proyecto se debe
configurar para habilitar las últimas versiones del software
disponible para las actuales versiones de Ubuntu *publicadas y con
soporte*. Por favor ten encuenta que no pretendemos duplicar el
esfuerzo del
proyecto de los Backports de Ubuntu. Los Backports busca el mismo
propósito sin embargo las actualizaciones no son tan constantes
y están limitadas a la version inicial con la que se
instala Ubuntu.
Videojuego para probar
Juego de puzzles gratis, con un concepto original
Narbacular Drop - Wikipedia
Narbacular Drop - Wikipedia
Narbacular Drop (IPA: [nɑɹbækjəlɚ dɹɒp]) is an environmental puzzle video game developed by Nuclear Monkey Software. It was released online for free in 2005 on PC (DX9). It was the Senior game project of students attending DigiPen. The gameplay consists of navigating a dungeon using an innovative portal system. The player controls two interconnected portals that can be placed on any non-metallic surface (wall, ceiling, or floor).
The word Narbacular, not existing in any dictionary, was chosen primarily to aid in Internet search engine results.[1].
viernes, octubre 12, 2007
La herencia es maaaala
En programación orientada a objetos, (casi?) siempre es mejor partir la funcionalidad mediante objetos Estrategia, en vez de utilizar herencia.
Inheritance is evil, and must be destroyed: part 1
El autor también ha creado una librería javascript para animación, basándose en ese concepto:
Bernie's Better Animation Class
Inheritance is evil, and must be destroyed: part 1
This looks like the simplest approach, and it is at first. However, your dark powers are locked up inside the DarkJedi class. If you need to make a DarkDroid and a DarkSpaceship that can both also crush townspeople, you're in trouble. These classes obviously can't extend Jedi, so you have to duplicate townspeople crushing functionality across your whole DarkArmy or split it out into utility functions that you call from every crushTownspeople method. Either way, it gets complicated.Now suppose you had done it like this:
// good
class Jedi {
function drawSabre():Sabre { ... }
}
class DarkPowers {
function crushTownspeople():void { ... }
}
class DarkJedi extends Jedi {
// DarkJedi has-a DarkPowers
public var darkPowers:DarkPowers = new DarkPowers();
}
dj:DarkJedi = new DarkJedi();
dj.darkPowers.crushTownspeople();
El autor también ha creado una librería javascript para animación, basándose en ese concepto:
Bernie's Better Animation Class
I checked several different libraries and found them all to be lacking.
In particular, they don't seem to realise that inheritance is evil, and must be destroyed. By providing base classes for an effect and requiring users to subclass it to make new effects, they create a proliferation of classes and make it too hard to create new effects that the library designer hasn't thought of (scriptaculous gets round this by thinking of every effect you might want, which is why it is so large).
Powered by ScribeFire.
Agregación de contenidos: ¿qué le falta para que funcione?
Una reflexión sobre las herramientas de "personalización" de la búsqueda en Internet y agregadores de contenidos (tipo iGoogle, My Yahoo, AideRSS, diversos tipos de "Smart folders"...)
Para que un servicio web funcione y sea utilizado, necesita al menos dos requisitos mínimos imprescindibles:
1) que aporte alguna ventaja sobre otros servicios similares,
2) que la barrera de esfuerzo para su uso sea mínima.
Los servicios de personalización, idealmente, añaden como ventajas a la navegación tradicional el detectar en la web información relacionada con tus gustos, y el permitirte archivar lo que encuentres para que puedas buscarlo más tarde.
... por desgracia, no existe aún ningún servicio que ofrezca una barrera de uso para todos ellos en una interfaz unificada. La principal carencia, que prácticamente ninguno permite recuperar con facilidad la información personal relevante. La información que archivas requiere por tu parte una búsqueda activa para poderla recuperar.
Por contra, los servicios que ofrecen información contextual relevante se centran en descubrirte enlaces que resultaron interesantes a otros usuarios. La 'killer feature' que yo necesito, y que no encuentro, es un servicio que me permita recuperar de forma automática la información relevante de mi propia historia de uso, de manera que los artículos que yo archivo vuelvan a mostrarse más tarde cuando sean relevantes a lo que esté haciendo entonces.
Para que un servicio web funcione y sea utilizado, necesita al menos dos requisitos mínimos imprescindibles:
1) que aporte alguna ventaja sobre otros servicios similares,
2) que la barrera de esfuerzo para su uso sea mínima.
Los servicios de personalización, idealmente, añaden como ventajas a la navegación tradicional el detectar en la web información relacionada con tus gustos, y el permitirte archivar lo que encuentres para que puedas buscarlo más tarde.
... por desgracia, no existe aún ningún servicio que ofrezca una barrera de uso para todos ellos en una interfaz unificada. La principal carencia, que prácticamente ninguno permite recuperar con facilidad la información personal relevante. La información que archivas requiere por tu parte una búsqueda activa para poderla recuperar.
Por contra, los servicios que ofrecen información contextual relevante se centran en descubrirte enlaces que resultaron interesantes a otros usuarios. La 'killer feature' que yo necesito, y que no encuentro, es un servicio que me permita recuperar de forma automática la información relevante de mi propia historia de uso, de manera que los artículos que yo archivo vuelvan a mostrarse más tarde cuando sean relevantes a lo que esté haciendo entonces.
Cómo registrar un dominio de Internet
Consejos paso a paso
How to Buy a Domain Name / WebDeveloper.com ®
How to Buy a Domain Name / WebDeveloper.com ®
If the domain is available, you can then proceed to the next step, the InterNIC's accredited registrar directory. You will be asked to fill in some information about the purchasing agent--yourself--and you will need to know in advance the two DNS servers you will be using for your domain. An easy way to find this info out is to look up the domain of the ISP or host you will be using. Their two DNS servers will most likely be the same ones that you will need, and you can copy and paste them from the whois lookup page to your registration form (provided you have opened two browser windows).
Do-it-yourself domain registration!
Powered by ScribeFire.
Suscribirse a:
Entradas (Atom)
