domingo, 26 de septiembre de 2010

Es la programación similar a un juego?

He oído a gente decir que la programación puede ser divertida. Incluso, he dicho que disfruto programar. ¿Es posible decir que la programación es similar a una experiencia de juego desde la perspectiva de los desarrolladores?

En su naturaleza, la ingeniería es algo que funciona como los juegos, por ejemplo:

  • En ambos hay una meta.
  • En ambos hay una manera de perder, que se supone que deben evitarse.
  • En tanto hay un conjunto de posibles acciones que tiene que hacer en cada momento, y la correcta ejecución de estos conduce a la meta.
  • En tanto hay factores que tal vez al azar.

Pero eso es buscar en un punto de vista académico de los juegos, no hablan de cuánto puede disfrutar de la programación, sólo dice que es posible. La programación puede ser vista como un juego, pero bien podría ser sólo un mal partido.

ES ADICTIVA LA PROGRAMACIÓN?

Piense acerca de cómo los juegos más adictivos (o puede ser que deba decir juegos compulsivos). Aquellos juegos en donde no se trata de divertir, sino que son acerca de hacer volver a la gente, no importa si les gusta hacerlo.

La mecánica de estos juegos es simple: se trata de una ruleta. Funciona de la misma manera que la gente se vuelve adicto a los casinos, porque le dan premios al azar con el potencial de ser lo suficientemente grande como para pagar lo que has perdido. Usted simplemente no puede salir del casino porque el siguiente puede ser un ganador.

¿Odiarías que si dejas una máquina de casino sólo para ver que la siguiente persona que se sienta gana el gran premio? Bueno, es posible que lo odies si eso sucede. Es mejor que quedarse allí hasta que gane. Ese es el núcleo de la adicción.

¿Ejemplo de estos juegos? La industria ha aprendido a hacer esto de una manera muy sutil, que ponen monstruos en el juego, que puede o no matar, pero si los matan, entonces soltaran dinero y algunos artículos al azar. Esos artículos al azar tienen un valor (aunque sean virtuales), ya que tomó la decisión y el esfuerzo para vencer a todo un monstruo para conseguirlo! Si es difícil de conseguir, es algo que vas a apreciar.

¿Tiene la programación esta característica? Bueno, sí y no. No es programa pulsando "botón de espada", "botón de espada", "botón de la espada"... Pero hay algunas partes repetitivas de la programación ... que no se deberían repetir mucho.

Pero se puede luchar contra monstruos, que son opcionales en la mayoría de los casos. Estos monstruos son opcionales, ya que puede así descargar algo ya hecho. Ya sabes, no reinventar la rueda. Estos monstruos son los algoritmos y estructuras de datos. Si decide implementar una estructura de datos de una manera reutilizable entonces la aplicación tiene un valor. Tiene valor porque ha implementado todo un algoritmo! y lo que tiene que pagar tiene valor. Aunque a la programación le hace falta es la parte aleatoria, lo que hace que la programación sea menos adictiva que su contraparte del casino.

INMERSIÓN

Inmersión es una característica clave de los juegos de rol. Eso es convertirse en el jugador una parte de la historia. Esto le da al jugador el poder de cambiar el resultado del juego, y ver y disfrutar de los efectos de forma dinámica.

Para tener la inmersión en un juego, usted querría que el juego reaccione con el jugador. Un juego que se comportan como si estuviera vivo, y también que permite al jugador cambiarlo. Estos entornos hace que el jugador se sienta y sea parte de la narración.

Hay dos tipos de entornos de programación que presentan esta característica:

  • Aquellos con un REPL (Leer - Evaluar - Imprimir Loop), como Python, que tienen un insterface similar a una terminal que te permite ejecutar comandos sobre la marcha. Es como el software fueron creciendo a medida que la escribe.
  • Aquellos que, como Visual Basic, que le permiten construir software gráficamente, que aumentar la parte constructiva de nosotros, y suministros de la necesidad de dejar el legado para las generaciones venideras. Es como crear el software de bloques de construcción.

Permítanme mencionar, que cualquier lenguaje puede ser de ese tipo, porque la magia se hace a nivel del compilador, de hecho, actualmente C # es a la vez de los dos tipos que menciono arriba ... en Mono C # tienen un REPL, y en Visual Studio tiene la forma y los diseñadores de diagrama de clase. (En Mono no es un diseñador de formularios también).

COOPERACIÓN Y COMPETENCIA

La mayoría de juegos tienen uno o el otro, para ser justos, los juegos con ambos suelen ser mejores. Cuando se esta en competencia hay aprender a defendernos a nosotros mismos, mientras que se alcanza una meta, este es uno de los objetivo de jugar en la naturaleza, para enseñar a los jóvenes cómo defenderse. Cuando se esta en cooperación también hay que aprender a sobrevivir, sino de un ambiente duro o alguna otra amenaza que se requiere para trabajar en equipo.

Más allá del nivel de los instintos, la Cooperación y el Compettion nos permiten compartir emociones con nuestros compañeros jugadores, que hacen más fuertes los vínculos con ellos, y crean sinergia. Combinado con Inmersión, esto se convierte en una poderosa herramienta para las relaciones humanas.

En la programación se puede tener tanto la cooperación y competencia. A pesar de cooperación es lo que más se promueve en la industria, la competencia nunca desaparecerá. También la competencia en la programación así como la competencia en los entornos físicos se está convirtiendo en una especie de deporte. Por ejemplo, hay competiciones regulares y sitios de Internet dedicado exclusivamente a esta cuestión. Por ejemplo TopCoder y Google Code Jam.

APRENDIZAJE

Lo creas o no, el aprendizaje es una parte crucial del juego. Pero no en el sentido del salón de clases. Tener cosas para descubrir y explorar nos permite desarrollar nuestras capacidades de investigación, y también dar satisfacción a nuestra interminable curiosidad.

Como se mencionó antes, el proposito de jugar es aprender a hacer las cosas. Es habitual que los niños jueguen con versiones de juguete de las cosas que van a utilizar cuando los adultos, tales como automóviles, por ejemplo. Hay algunos juguetes que los padres dan a sus hijos para moldear su comportamiento (incluso si no saben lo que están haciendo, los nuevos juguetes moldean su comportamiento), por ejemplo, hay juguetes para las niñas, que se asemejan a lo que la sociedad espera de las niñas cuando crecen hacia arriba (como la cocina? ... y la elección de un novio que tenga carro?).

Más allá de las imposiciones, los juguetes tienen el poder de enseñar en dos formas:

  • Constructivo: que permite explorar las interacciones y pruposes de las cosas
  • Desctructive: permite explorar la mecánica interna mediante la adopción de ese juguete de distancia.

La programación también tienen ese componente de aprendizaje, usted puede aprender en una forma construtiva, por ensayo y error. O de una manera desctructive haciendo incisiones en el software de código abierto, sólo para ver qué sucede. O de manera más pasiva, con la simple lectura del código.

REPUTACIÓN

Es difícil encontrar algo más atractivo que el de status. La gente tiene una necesidad de encontrar amigos, pareja y el apoyo de terceros, esto es una garantía para seguir con vida en la antigua selva. Hoy se trata de conseguir más premios, y un carro mejor. El status es también atractivo para conseguir citas, pero eso es harina de otro costal.

El punto es que todo el mundo quiere un cierto nivel de status, y que es el status? status es la visibilidad de los monstruos que has matado, por lo que todo el mundo sabe que eres alguien. Es decir que tienes un nombre.

Construir una reputación en el software suele ser muy difícil, el usuario final no le importa, porque para ellos eres poco más que el nombre detrás de la función. Pero entre los desarrolladores la cosa es un poco más fácil. Pero pensemos en esto ... si quiero reputación debo mostrar lo que he hecho, y eso significa que otros puedan aprender de él, e incluso tomstlo para su beneficio.

Es un decisión difícil para muchos. ¿Quieres compartir tu código fuente?

Si lo haces ... ¿te dará dinero?

Puedo asegurar que te dará fama y que lo disfrutarás. Acerca de dinero que no puede estar tan seguro, pero no le hará daño revelar sólo algunas cosas y mantener otras cerrados del público.

CONCLUTION

La programación no puede tener todos los componentes de un juego, pero tiene las necesarias para permitir que la gente lo disfrute. Todavía faltan algunos aspectos importantes, como puntuaciones. Pero está comprobado que todo es comunidad y la magia entorno de desarrollo. No es sobre el hardware o el idioma que elijas, pero las herramientas y la gente que va a hacer La diferencia entre disfrutar o odiar programación.

domingo, 12 de septiembre de 2010

¿Que hay de malo en Mono?

De acuerdo con un articulo (en inglés) escrito por Richard Matthew Stallman, hay algo peligroso en "depender" en C#.

Puede resultar curioso que Stallman se preocupe por la dependencia en un lenguaje de programación en particular, pues el lenguaje de programación se puede cambiar a otro y obtener el mismo software (incluso idéntico a nivel binario, con algo de ayuda del compilador). Muy a pesar de esto, según dice Stallman en el citado articulo, "El riesgo" es que Microsoft quiera someter las implementaciones de C# bajo una patente.

En mi opinión si algo de esto llegara a ocurrir, el menor de los problemas seria cambiar el lenguaje a otro equivalente. Sin embargo la verdad es que esto no va a llegar a ocurrir.

¿por que Microsoft no patentará C#?

Si hacemos algo de memoria, recordaremos que .NET es un estándar, sin embargo, algo menos sabido es que C# esta registrado ante ISO, tal como una pequeña busqueda en Internet lo puede demostrar.

Microsoft no puede hacer esa patente porque:

  1. Microsoft ha registrado C# ante ISO.
  2. Ya existen implementaciones de terceros.
  3. Pueden demandar a Microsoft por monopolio.
  4. A Microsoft le conviene que existan otras implementaciones de C#, para atraer desarrolladores a Visual Studio.

Tal vez lo que le preocupa a Stallman es que no digan "estándar libre" sino "estándar abierto". Pero Stallman como la comunidad de software libre deben entender que no hay tal cosa como un "estándar libre" porque si todos tienen derecho a modificar y adaptar el estándar a su gusto entonces ya no es estándar. En el mejor de los casos podemos decir que es una recomendación técnica, una sugerencia o una guía.

Puede ser que lo que molesta a Stallman sea que Debian este utilizando Mono, que Mono sea de Novell y que nadie utilice DotGNU. Mono no esta en contra de la política y filosofía GNU, y Stallman lo sabe.

domingo, 15 de agosto de 2010

.NET como estándar

.NET framework es un estándar abierto desarrollado por Microsoft, su implementación consta de un conjunto de librerías que contienen funciones  para realizar tareas comunes, de forma que los programadores no tengamos que volver a escribir las partes repetitivas del programa. Además de esto, .NET define una forma estándar para la comunicación entre programas y dos lenguajes de programación llamados IL y C#.

Entre las implementaciónes de .NET encontramos Dot/GNU del proyecto GNU, Mono Framework de Novell (Dueños de la distribución SUSE de Linux) y .NET Framework de Microsoft. Las tres comparten la misma estructura básica, librerías equivalentes y los mismos lenguajes. De forma que la mayoría de programas que escribamos para una de estas implementaciónes .NET funcionará en las demás.

A pesar de ser un estándar abierto registrado ante ECMA e ISO, existen diferencias en las implementaciónes principalmente porque Microsoft lleva el liderazgo en desarrollo y las implementaciónes Mono y Dot/GNU se encuentran rezagadas. Por otra parte por que la implementación de Microsoft solo funciona en sistemas Windows, mientras que Dot/GNU se enfoca en sistemas derivados de UNIX y Mono pretende funcionar en múltiples plataformas.

Cabe resaltar la similitud a nivel de arquitectura que tiene .NET con Java de Sun Mycrosistems, con la diferencia que esta ultima no es un estándar abierto. Ademas hay que anotar que Microsoft y Mono han desarrollado una herramienta para aplicaciones interactivas, la cual compite con Flash de Adobe. Esta herramienta se conoce como SilverLight desde el mundo Microsoft y MoonLight en Mono.

Por ultimo, .NET es la base de la plataforma de desarrollo Web ASP.NET, competencia directa de PHP y JSP. Así mismo .NET es el marco de trabajo para sistemas XBOX y XBOX 360 de Microsoft.

jueves, 12 de agosto de 2010

Lo que se consigue puede diferir de lo que se ve

Desde la primera entrada de este blog, empecé a tener problemas con el formato del mismo. Estoy usando un editor que se incrusta en la web, que el editor también afirma que "lo que ves es lo que obtienes". Pero en la práctica lo que veo es un montón de vacíos "span" etiquetas HTML, y cosas similares, por ejemplo, los párrafos se hace usando la etiqueta HTML "div" en lugar de "p".

¡Y yo no me gusta!

Como sé que mi arte antiguo de HTML, prefiero tener más control sobre lo que voy a publicar, pero de nuevo me gustaría no tener que pensar en eso cuando estoy escribiendo. Así que decidí escribir mi HTML aparte en un software de escritorio. Empecé a usar Geany, porque es lo que yo uso para el desarrollo web (cuando no estoy en Visual Studio), y así fue como escribí mi primer artículo.

¡Pero no es exactamente lo mismo!

He descubierto que este blog conserva las nuevas líneas que tenía en HTML, el resultado es que yo tenía algunas líneas donde no se esperaban. Puede que comience a buscar un software que haga mi post con un mejor formato.

Mientras tanto, voy a olvidarme de las atrocidades de "span", y continuar manejando mi escritura de este blog.

Editado: Hasta ahora he arreglado el formato, sólo estoy usando el HTML para escribir los mensajes, e indicando blogger a no insertar nuevas líneas. También recuerde siempre utilizar la "p" en mi HTML.

Inglés y español, nuevo nacimiento de etiquetas

Tengo que enfrentar este problema: tener contenido que puede presentar problemas para traducirse al inglés. Como he dicho en otro post, soy de Colombia, pero quiero mantener una buena traducción al inglés. Para ello, cuando coloque contenido especifico para español voy a revisar la traducción que hace Google para este blog. Después de que he decidido que la traducción esta bien, voy a publicar la versión traducida en C# Dash & Slash.

Esto tiene un inconveniente. Podría ocurrir que las traducciones se retrasan, así que para aquellos interesados en los temas más recientes, hay un cuadro de traducción. A la derecha, debajo del cuadro de búsqueda. allí usted puede seleccionar "English" para ver este blog en inglés. Me aseguro de que todas las traducciones que ofrece Google para este blog son exactas y que nunca va a cambiar el sentido del texto que tengo en ella.

Pero ahora, supongamos que me gustaría compartir algunos vídeos de otra fuente ... por ejemplo, pero los videos no son fáciles de traducir de Español al Inglés (o viceversa), también es mucho tiempo para proporcionar subtítulos u otra tecnología similar (que probablemente sería mejor hacer eso, usted me puede culpar al optar por no hacerlo). Y ya que espero tener cierto nivel de visitantes que hablan inglés, y las probabilidades son que habrá gente que no puede ser tan buena en español. Los videos van a ser un problema, ya que puede tenerlos en Inglés o en español.

Así que... para aquellos, siempre existe la opción de aprender español, ya sea con una película, un libro, juegos de video, o con un profesor. Aunque no soy profesor de español, puedo encontrar algunos libros para aprender español en internet.

¡Pero todavía deseo publicar los videos! (Y otras cosas específicas del lenguaje).

Editado: Todo eso será colocado en C# Dash & Slash, si yo no puedo aportar una traducción decente a español, voy a añadir la etiqueta "Ingés" al artículo cuando lo pongo en este blog. Además, si algo he puesto aquí que no puede traducir correctamente al inglés para añadirlo a C# Dash & Slash entonces ese articulo tendrá la etiqueta de "Español".

Código y Google

Tengo el siguiente problema: He estado tratando de escribir un ejemplo "hola mundo" para "C#" en el blog. Pero cuando te lo traducen al español... el código también está traducido, hasta ahora he encontrado las siguientes opciones:

  1. Colocar el código como una imagen, por lo que no se pueden traducir.
  2. Colocar el código dentro de un iframe, por lo que no se traducen.
  3. Colocar el ejemplos dos veces, uno para Inglés, y uno para el español.

Mi problema para la primera es que el código no puede ser copiado, y quiero que el código para ser copiado por mis lectores (en la forma de pensar que voy a tener lectores). Así que la segunda puede ser preferible... pero significa albergar el código en otra parte. Acerca de la tercera... Quiero escribir una sola vez. Ya sabes, a la reutilización y esas cosas.

Editado: Me he decidido a escribir un blog dedicado a los lectores que tienen el inglés como su lengua natural. Usted puede encontrar aquí: C# Dash & Slash

Nuevo Blog

Hola, este es mi nuevo blog "C# porque no sé ++".

Pero, ¿Quién soy?

Mi nombre es Alfonso Ramos y yo soy un desarrollador independiente de software y ... nuevo escritor de blogs?

Estoy escribiendo un blog a causa de tres grandes factores:

  1. la primera es que el correo es un desastre, a menudo he encontrado a mí mismo escribiendo o leyendo mucho en mi cuenta de correo que un simple blog podría facilitar las cosas.
  2. El segundo es que quiero compartir algunos conocimientos con ECMA-334 (me refiero a C#) y ECMA-335 (me refiero a (punto). NET Framework, también Mono).
  3. Y tercero, porque es una oportunidad de tener un nombre más grande en Internet.

Por lo tanto, esto trae una cuantas preguntas obvias sobre la mesa:

¿Sobre qué voy a crear un blog?

Voy a estar escribiendo sobre las cosas que la gente alrededor me escribe, las cosas que hago con los ordenadores (algunos proyectos, etc), y lo que está sucediendo en la industria que me afecta. y por qué no unos cuantos chistes si vienen a la mano.

¿Porqué quieres leer mi Blog?

No sé, eso depende de usted, no voy a prometer nada, ni dar incentivos de ningún tipo para venir a leer mis divagaciones y locuras. Pero, de nuevo ... ¿Por qué no? si usted tiene algún tiempo para pasar (Sé que tienes desde que te está leyendo esto ya) las probabilidades son que usted puede encontrar algo interesante que leer aquí, si no, bueno, eso está bien también.

¿Cómo puede usted ponerse en contacto conmigo?

Vía mail, el viejo sistema sigue funcionando, así que usted puede usarlo, encontrar la manera de escribirme en mi perfil. Sin embargo voy a hacer mi mejor esfuerzo para evitar la necesidad de obligar a la gente de mandarme por correo (ya saben, este es un blog para que dejar comentarios y esas cosas). Sobre eso, voy a ser un moderador "optimista" acerca de los mensajes, todos los mensajes están en forma predeterminada, pero me reservo el derecho de eliminar cualquier mensaje que encuentro nocivos o molestos. Esto se opone a la moderación pesimista, que es cuando usted no deja ningún mensaje hasta que se revisa. Probablemente me cambie a eso en algún momento en el futuro si este blog no va demasiado bien. Por lo tanto, si tienes ganas de decirme algo por favor comente si es posible, de lo contrario siempre existe la "antiguo" e-mail.

Editado: He añadido una nueva sección de contacto en este blog, buscarlo en el menú superior.


Mis propias faltas

Tengo algunos fallos en mi auto sobre la escritura, esta es la lista de base:

  1. Tiene vínculos muy pocos. Es decir, hay un montón de páginas que pueden ser referencia en este blog, pero no estoy haciendo porque me olvidé de ella, o yo soy perezoso.
  2. Escribo mucho, si me lo permiten. Y me lo permiten. Puede ser un problema, entonces otra vez se puede arreglar fácilmente mediante el fraccionamiento de lo que escribo aquí en más de un post.

Editado: Esta es la versión en Español del Blog "C# Dash & Slash". He escrito ese blog en Inglés. Si usted es un hablante de Inglés te recomiendo que lo visites.

Ahora, si me encuentras que cometan cualquiera de los pecados anteriores, hágamelo saber. Trato de fijar el mensaje o agregar nueva entrada para cubrir el problema. ¿Cómo? Trate de dejar comentarios en los post, o si eso no funciona vaya a utilizar el correo electrónico, obtener la información de mi e-mail de mi perfil.

Nacimiento de la etiqueta "Blog"

Este es el nacimiento de la etiqueta llamada "Blog", está pensada para ser utilizada en todos los Articulos de los que se describen información sobre el propio blog, y también todos los Articulos de que hablan de mi experiencia escribiendo este blog, o artículos que tienen una función especial pero no están orientados a los contenidos, excepto los nacimientos de etiquetas.

"C#" y ".NET" son etiquetas nacidas como gemelas!

Se trata de un parto doble, mi primer artículo orientado al contenido, está relacionado con "C#", y ".NET", así que voy a dar a luz a ambas marcas al mismo tiempo.

Ahora, la etiqueta llamada "C#" irá a todos los que tengan alguna relación con la lengua, la forma de escribir algo en "C#", ejemplos y ese tipo de cosas, estoy abierto a escribir un montón de que, en relación con el el idioma en un futuro próximo.

Además, la etiqueta llamada ".NET" irá por todo aquello relacionado con ".NET" se incluirá la parte de Mono es una implementación del estándar ECMA-335. Creo que voy a dar a luz a la etiqueta "Mono" para todos los artículos que son específicos para el progreso del proyecto Mono... pero esa es otra historia, que debe ser contada en otro momento.

Nacimiento de la etiqueta "HTML"

Hoy no estamos aquí para celebrar el dolor, sino para celebrar el nacimiento de la más ambigua de todas las etiquetas! la etiqueta "HTML"!

Esta es una etiqueta que se establecerá en los artículos, no una etiqueta de "HTML"... Bien, esto puede ser confuso, lo que estoy diciendo es que yo pondré "HTML" como una etiqueta a todos los artículos que estén relacionados con el HTML, tiene sentido? Bien!

Nacimiento de Etiqueta

En la primera vez que establezca una nueva etiqueta a un artículo, planeo describir lo que va en esa etiqueta. Para hacerlo, voy a escribir un artículo de nacimiento de etiqueta. Por lo tanto, para iniciar la metodología de los nacimientos de etiquetas, este es el nacimiento de la etiqueta de "TagBirth".

En el marco del TagBirth, pondré todos los artículos que son de nacimiento de etiquetas, a partir de ahora. También por regla general será que todos los artículos de nacimiento etiquetas tendrá la etiqueta que ha nacido.