style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Video podcast de ViveCodigo 00x10 - Coding Dojo

Se ha publicado un nuevo episodio de ViveCodigo, en donde se llevó a cabo un Coding Dojo.

Si sólo deseas escucharlo entonces:

El video del podcast:

La liga del artículo con los vínculos y demás información:

http://vivecodigo.org/2011/12/21/podcast-10-de-la-temporada-0/

Que lo disruten!!

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Mónada

En español el término es mónada o monoide (como dijo neodevelop).

Para variar las soluciones más chorera al fizzbuzz es en Java (y no porque la haya hecho java.daba.doo sino por limitaciones del lenguaje). Y la de PHP es muy similar.

Qué es lo que usó MachinesAreUs para la calculadora? Es Perl?

Mi solucion al FizzBuzz

Bueno me entraron ganas de hacer lo del FizzBuzz cuando puse el video antes de seguir viendolo XD
y esta fue mi solucion:

       StringBuilder stringBuilder;
        for (int i = 1; i < 101; i++) {
            stringBuilder = new StringBuilder();
            stringBuilder.append((i % 3) == 0 ? "Fizz" + ((i % 5) == 0 ? "Buzz" : "") : (i % 5) == 0 ? "Buzz" : i);
            System.out.println(stringBuilder);
        }

fue la manera mas sencilla de hacerlo que se me ocurrio y que ocupara menos codigo.

Dos lineas

for (int i=1;i<=100;i++) {
System.out.print(i + (i%3==0 ? "Fizz":""));
System.out.println( (i%5==0 ? "Buzz":""));
}

Dos lineas

for (int i=1;i<=15;i++) {
System.out.print(i + (i%3==0 ? "Fizz":""));
System.out.println( (i%5==0 ? "Buzz":""));
}

Experiencia

Siempre usó haskell. Efectivamente en estos casos se nota lo poco flexible que puede ser Java, o mejor dicho lo mas ágiles que son otros lenguajes. Ya se ha dicho mucho sobre Java, no es malo pero como dices: es muy verboso y a comparación con otros lenguajes hasta puede ser ridículo.

Edit: Sobraba el

Edit:
Sobraba el StringBuilder, se me olvido quitarlo cuando estaba haciendo pruebas:

        for (int i = 1; i < 101; i++) {
            System.out.println((i % 3) == 0 ? "Fizz" + ((i % 5) == 0 ? "Buzz" : "") : (i % 5) == 0 ? "Buzz" : i);
        }

esa si es la manera mas simple que se me ocurre XD

2do

El tercero no esta difil, me dio flojera XD la tercera parte XD

Imagen de ezamudio

fizzbuzz

hace tiempo varios estuvimos posteando el fizzbuzz en varios lenguajes, en otro tema. Aquí el mío en Scala.

Orale

Orales que rudos los comentarios que hay en el hilo que pone ezamudio, entre a ver las soluciones del fizzbuzz en varios lenguajes y me quede leyendo cosas como que casi, casi eres una M....a subnormal si programas en PHP, Zuttt !!!. En alguna ocasión conocí a un personaje que se creía bien master configurando servidores, me hablaba de sus arquitecturas, se deleitaba hablándome de sus cajas, puertos, ip's, firewalls, DMZ's, etc. , y casi casi nos decía: miren !!!, vengan a ver como destrozo aplicaciones usando una herramienta de stress :P, se sentía el INGENIERO más chingón del planeta tierra, y créanme, no lo digo en son de burla, ya que el tipo es muy bueno haciendo eso, sin embargo, todo eso me llevo a pensar: En México no se hace ingeniería, (con sus contadas excepciones), ser Ingeniero en México, significa leer manuales, (especificaciones, bla, bla, bla) y aplicar lo que dice el manual, lo mismo cabe "tristemente" para muchos casos. Particularmente de los "ingenieros en sistemas" más sesudos que he conocido, muchos, ni siquiera son I.S.C. anexas o conexas :P.... Hay dos tipos de ingenieros: LOS QUE CREAN TECNOLOGÍA Y LOS QUE USAN LA TECNOLOGÍA, ¿QUE TIPO QUIERES SER TÚ?, particularmente creo que es mejor leer y aprenderse bien los manuales, jajajajajajajajajajajaja :P. Feliz Janucá!!! Feliz Navidad !!!

Re: Experiencia

Pues para mí el único lenguaje que no se veía tan verboso fue Groovy, aunque Groovy no me agrada. Fuera de ahí, hasta Haskell se me hizo muy verborreico. Había veces que se tenían mismo número de líneas en Haskell y en Java, pero, podemos decir que pues tampoco era un maestro en Haskell quien hizo esos ejemplos, por lo que creo que dentro de un tiempo @MachinesAreUs pudiera mejorar o reducir los algoritmos, y eso a todos nos pasa cuando queremos aprender un lenguaje.

Respecto a lo que dijo @ezamudio, de que Java parecido a PHP, pues, no la neta no, para mí Java si es legible, pero PHP no.

Imagen de neko069

@sajero

Y como qué tiene que ver un administrador de servidores, con un ingeniero, y los comentarios de ezamudio con respecto a PHP ?
Y aún más, qué tiene que ver todo éso con el coding dojo que es el tema central?

Imagen de ezamudio

Java vs PHP

Mi comentario de Java y PHP va en cuanto a la cantidad de líneas de código necesarias para resolver los problemas. Jamás diría que son similares; también pienso que Java es más legible. Ese operador de concatenación en PHP con punto, me saca ronchas.

Para el fizzbuzz, no puedes decir que Haskell es igual de verborreico; fue el que menos código tenía! Para los otros sí es bastante más, pero pues MachinesAreUs luego luego dijo que el procesamiento de textos es algo que todavía no le sabe bien porque está aprendiendo el lenguaje apenas. Y aún así usó algunas características interesantes del lenguaje, como tener distintas versiones de una función y que se hace pattern matching sobre las mismas, según el argumento (algo que Erlang supongo que adoptó de Haskell ahora que lo veo, porque en Erlang se puede hacer eso mismo).

En cuanto a la relevancia, pues estamos hablando del código que escribieron los participantes en el dojo, no? Es como si vieras una pelea de box o cualquier otra competencia y te pones a comentar del evento...

Diversidad en el siguiente Dojo

@neodevelop comentaba que en el proximo Coding Dojo se espera que asistan personas que aborden los problemas con lenguajes que estén apenas aprendiendo. En este caso y a mi punto de vista no es para poner a pelear los lenguajes sino simplemente mostrar la abstraccioón de la persona que este resolviendo el problema. Esto sirve para demostrar las capacidades reales que tienes para resolver un problema pues al no conocer bien el lenguaje buscas la manera de que finalmente quede resuelto y hasta uno mismo puede encontrar cosas interesantes del lenguaje que utilice. Segun recuerdo @Domix habia promovido (creo que en el campus party) el coding dojo como una practica constante en los programadores que no va mas allá de afinar sus habilidades.

Yo en lo personal me lleve una buena experiencia y espero la siguiente edición en la que desearia ver mas diversidad de lenguajes de programacion o de scipt (¿por que no?): Java, Groovy, Scala, Ryz, Clojure, Ceylon, javaScript, CoffeeScript, lingo, C#, C, NodeJS, Haskell, etc... Claro que tampoco se vale llegar en ceros, asi que a estudiar un poco y seguro que nos vemos en el proximo Coding Dojo

Clojure

FizzBuzz en clojure.
Clojure es de tipado dinamico.

(defn div?[n d] (= (mod n d) 0))

(defn fizzbuzz[n]  
        (let [m3 (div? n 3) m5 (div? n 5)]
                (cond (and m3 m5) "FizzBuzz" m3 "Fizz" m5 "Buzz" true n)))
                                 
(dorun (map #(println(fizzbuzz %)) (range 1 101)))

Link a ideone permite compilar y ejecutar código en más de 40 lenguajes de programación

http://ideone.com/xWmxZ

Re: Java vs PHP

Pues para el FizzBuzz en Java tampoco son tantas líneas son 10, si quisieras poner llaves y retornos de carro pues son 16 o algo así:

public class FizzBuzz{
        public static void main(String ... args){
                for(int i = 1; i < 101; i++){
                        if(i%3==0) System.out.print("Fizz");
                        if(i%5==0) System.out.print("Buzz");
                        if(i%3!=0 && i%5!=0) System.out.print(i);
                        System.out.println("");
                }
        }
}

Yo me lo aventé en Ruby y Python:

#En ruby
def FizzBuzz()
--(1..100).each do |x|
----print "Fizz" if x% 3 == 0
----print "Buzz" if x%5 == 0
----print x if x%3 != 0 && x%5!=0
----puts ""
--end
end
#En python
def fizzbuzz(num, retorno=''):
        if num%3==0:retorno+= 'Fizz'
        if num%5==0:retorno+= 'Buzz'
        if num%5 !=0 and num%3 != 0: retorno = num
        print retorno
       
filter(fizzbuzz, range(1,100))

Incluso mi solución Python se parece demasiado a la de Haskell que hizo @MachinesAreUs. De hecho me esperaba de los lenguajes funcionales algo más de hacer mucho con pocas líneas de código.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">