SlideShare uma empresa Scribd logo
Bogosort                  ,
 Klingon Code, XGH, ...
     Henr“ikke” Pereira
         @ikkebr
@ikkebr
• Bacharel em SI
    – UNIFRA
• Mestrando em Computação
    – UFSM

•   Python
•   PHP
•   JAVA
•   Haskell
Essa Palestra
• Não é:
  – Para ser levada a sério
     • Só algumas partes
  – Para os fracos de coração
  – Para quem se ofende facilmente
  – Para crianças menores de 18 anos
Roteiro
• BogoSort
• Klingon Code
• eXtreme Go Horse
NinjaSort
MonkeySort
EstouComSort
Fluxograma
“Stop the bullshit and show me the code.”
                                   Anônimo
Bogosort em Java
Bogosort em Scheme
"Qualquer idiota é capaz de escrever
   código que um computador possa
entender. Bons programadores escrevem
   código que seres humanos podem
               entender."
                           Martin Fowler
Bogosort em Ruby
Bogosort em Python
Quando usar?
• Quando um código roda rápido demais.
• Quando se deseja mostrar a um cliente como
  ficaria o programa se ele fosse feito em <insira
  outra linguagem aqui>.
• Em apresentações como essa.
Desempenho



Matador!
Análise (número de Shuffles)
4000

3500

3000

2500
                                                               Mínimo
2000
                                                               Média
1500                                                           Máximo
1000

 500

   0
       3 elementos   4 elementos   5 elementos   6 elementos
+ Análise (número de Shuffles)
35000

30000

25000

20000
                                Mínimo
15000                           Média
                                Máximo
10000

5000

   0
        3   4    5    6     7
+ Análise (número de Shuffles)
1400000

1200000

1000000

800000
                                      Mínimo
600000                                Média
                                      Máximo
400000

200000

      0
          3   4   5   6   7   8   9
10 elementos!
7000000

6000000

5000000

4000000
                                            Mínimo
3000000                                     Média
                                            Máximo
2000000

1000000

      0
          3   4    5   6   7   8   9   10
Extrapolando um pouco
“A maioria do software hoje é como uma
   pirâmide egípcia com milhões de blocos
    empilhados um em cima do outro, sem
integridade estrutural, apenas feitos por força
        bruta e centenas de escravos.“
                                       Alan Kay
5 Verdades sobre os Klingons



Um verdadeiro guerreiro Klingon
  nunca comenta seu código.
5 Verdades sobre os Klingons


Programas Klingons não possuem
 parâmetros, apenas argumentos.
   E eles devem ganhar todas as
             batalhas.
5 Verdades sobre os Klingons



Específicações são para os fracos e
          para os tímidos.
5 Verdades sobre os Klingons


Klingons não fazem “releases”. Eles
    deixam que o código crie vida
  própria e escape para aterrorizar
             os usuários.
5 Verdades sobre os Klingons


Um programador Klingon se sente
 extremamente magoado se você
 reportar um bug no software. Ele
  só conseguirá largar essa mágoa
 quando matar toda a sua família.
5 Verdades sobre os Klingons


Programadores Klingon não sabem
  contar e também não acreditam
             no Bugfoot.
“Os melhores programadores escrevem apenas
              programas fáceis. "
                           Michael A. Jackson
Michael Anthony Jackson
- Principles of Program Design
- System Development
- Software Requirements &
   Specifications
- Business Process Implementation




http://mcs.open.ac.uk/mj665/
“O problema com programadores é que você
 nunca pode dizer o que um programador está
     fazendo até que seja tarde demais.“
                                Seymour Cray
eXtreme Go Horse (extreme)
http://gohorseprocess.wordpress.com/
Pensou, não é XGHx.
Não existe refactoring.
   Apenas rework.
Se tiver funcionando, não rela a
               mão.
Testes são pros fracos.
Fear Driven Development
“Os primeiros 90% do código representam os
 primeiros 90% do tempo de desenvolvimento.
 Os 10% restantes representam os outros 90%
        do tempo de desenvolvimento.”
                                  Tom Cargill
É o fim!

http://twitter.com/ikkebr
ikke@acidhacker.com

Mais conteúdo relacionado

Semelhante a Bogosort [CfC]

Hackeando o Facebook com Python
Hackeando o Facebook com PythonHackeando o Facebook com Python
Hackeando o Facebook com Python
FATEC São José dos Campos
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
Igor Sobreira
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo Real
Leandro Silva
 
Novas Fronteiras
Novas FronteirasNovas Fronteiras
Novas Fronteiras
Rangel Torrezan
 
Iniciando em Python
Iniciando em PythonIniciando em Python
Iniciando em Python
Rober Guerra
 
Aspectos profissionais 3pontos
Aspectos profissionais 3pontosAspectos profissionais 3pontos
Aspectos profissionais 3pontos
Miguel Alho
 
Botnets
BotnetsBotnets
Botnets
Alex Nogueria
 
FEEC - A Semente não Entendida de todas as Metodologias
FEEC - A Semente não Entendida de todas as MetodologiasFEEC - A Semente não Entendida de todas as Metodologias
FEEC - A Semente não Entendida de todas as Metodologias
Fabio Akita
 
Software Livre, que história é essa?
Software Livre, que história é essa?Software Livre, que história é essa?
Software Livre, que história é essa?
Almir Mendes
 
QConRio 2014 - Uso de Headless Browsers em Testes Automatizados
QConRio 2014 - Uso de Headless Browsers em Testes AutomatizadosQConRio 2014 - Uso de Headless Browsers em Testes Automatizados
QConRio 2014 - Uso de Headless Browsers em Testes Automatizados
Stefan Teixeira
 
Como usar IA para melhorar a qualidade do seu código
Como usar IA para melhorar a qualidade do seu códigoComo usar IA para melhorar a qualidade do seu código
Como usar IA para melhorar a qualidade do seu código
Evandro da Silva Amparo
 
Ideais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverIdeais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriver
Stefan Teixeira
 
OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014
Marcio Marchini
 
Publicando jogos na Xbox Live Arcade
Publicando jogos na Xbox Live ArcadePublicando jogos na Xbox Live Arcade
Publicando jogos na Xbox Live Arcade
José Farias
 
Além da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangAlém da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e Erlang
Elaine Naomi
 
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes AutomatizadosScrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Stefan Teixeira
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e Django
Osvaldo Santana Neto
 
Aplicações de Alto Desempenho com JHipster Full Stack
Aplicações de Alto Desempenho com JHipster Full StackAplicações de Alto Desempenho com JHipster Full Stack
Aplicações de Alto Desempenho com JHipster Full Stack
João Gabriel Lima
 
Minicurso "Jogos Multiplataforma com Javascript"
Minicurso "Jogos Multiplataforma com Javascript"Minicurso "Jogos Multiplataforma com Javascript"
Minicurso "Jogos Multiplataforma com Javascript"
Felipe Pedroso
 
UPF Senainfo - Passo Fundo-RS
UPF Senainfo - Passo Fundo-RSUPF Senainfo - Passo Fundo-RS
UPF Senainfo - Passo Fundo-RS
Fabio Akita
 

Semelhante a Bogosort [CfC] (20)

Hackeando o Facebook com Python
Hackeando o Facebook com PythonHackeando o Facebook com Python
Hackeando o Facebook com Python
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo Real
 
Novas Fronteiras
Novas FronteirasNovas Fronteiras
Novas Fronteiras
 
Iniciando em Python
Iniciando em PythonIniciando em Python
Iniciando em Python
 
Aspectos profissionais 3pontos
Aspectos profissionais 3pontosAspectos profissionais 3pontos
Aspectos profissionais 3pontos
 
Botnets
BotnetsBotnets
Botnets
 
FEEC - A Semente não Entendida de todas as Metodologias
FEEC - A Semente não Entendida de todas as MetodologiasFEEC - A Semente não Entendida de todas as Metodologias
FEEC - A Semente não Entendida de todas as Metodologias
 
Software Livre, que história é essa?
Software Livre, que história é essa?Software Livre, que história é essa?
Software Livre, que história é essa?
 
QConRio 2014 - Uso de Headless Browsers em Testes Automatizados
QConRio 2014 - Uso de Headless Browsers em Testes AutomatizadosQConRio 2014 - Uso de Headless Browsers em Testes Automatizados
QConRio 2014 - Uso de Headless Browsers em Testes Automatizados
 
Como usar IA para melhorar a qualidade do seu código
Como usar IA para melhorar a qualidade do seu códigoComo usar IA para melhorar a qualidade do seu código
Como usar IA para melhorar a qualidade do seu código
 
Ideais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverIdeais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriver
 
OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014
 
Publicando jogos na Xbox Live Arcade
Publicando jogos na Xbox Live ArcadePublicando jogos na Xbox Live Arcade
Publicando jogos na Xbox Live Arcade
 
Além da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangAlém da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e Erlang
 
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes AutomatizadosScrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e Django
 
Aplicações de Alto Desempenho com JHipster Full Stack
Aplicações de Alto Desempenho com JHipster Full StackAplicações de Alto Desempenho com JHipster Full Stack
Aplicações de Alto Desempenho com JHipster Full Stack
 
Minicurso "Jogos Multiplataforma com Javascript"
Minicurso "Jogos Multiplataforma com Javascript"Minicurso "Jogos Multiplataforma com Javascript"
Minicurso "Jogos Multiplataforma com Javascript"
 
UPF Senainfo - Passo Fundo-RS
UPF Senainfo - Passo Fundo-RSUPF Senainfo - Passo Fundo-RS
UPF Senainfo - Passo Fundo-RS
 

Mais de Henrique Gabriel Gularte Pereira

EBAC Django
EBAC DjangoEBAC Django
Mythbusters - Front in SM
Mythbusters - Front in SMMythbusters - Front in SM
Mythbusters - Front in SM
Henrique Gabriel Gularte Pereira
 
O Estado do Python
O Estado do PythonO Estado do Python
Não é uma palestra sobre Python
Não é uma palestra sobre PythonNão é uma palestra sobre Python
Não é uma palestra sobre Python
Henrique Gabriel Gularte Pereira
 
Site da UFSM: Django a 700 requisições por segundo
Site da UFSM: Django a 700 requisições por segundoSite da UFSM: Django a 700 requisições por segundo
Site da UFSM: Django a 700 requisições por segundo
Henrique Gabriel Gularte Pereira
 
Python com Django: ganhando espaço em uma Universidade Federal
Python com Django:  ganhando espaço em uma Universidade FederalPython com Django:  ganhando espaço em uma Universidade Federal
Python com Django: ganhando espaço em uma Universidade Federal
Henrique Gabriel Gularte Pereira
 
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Henrique Gabriel Gularte Pereira
 
Introdução ao Python com Django
Introdução ao Python com DjangoIntrodução ao Python com Django
Introdução ao Python com Django
Henrique Gabriel Gularte Pereira
 
DevOps com Python
DevOps com PythonDevOps com Python
Welcome to the Django
Welcome to the DjangoWelcome to the Django
Welcome to the Django
Henrique Gabriel Gularte Pereira
 
BogoSort 2.0
BogoSort 2.0BogoSort 2.0
Antigo_Scrum
Antigo_ScrumAntigo_Scrum
Análise do BogoSort
Análise do BogoSortAnálise do BogoSort
Análise do BogoSort
Henrique Gabriel Gularte Pereira
 
Usando o WICD com localizacao fisica de dispositivos
Usando o WICD com localizacao fisica de dispositivosUsando o WICD com localizacao fisica de dispositivos
Usando o WICD com localizacao fisica de dispositivos
Henrique Gabriel Gularte Pereira
 
O Software Livre no Mundo do MicroBlogging
O Software Livre no Mundo do MicroBloggingO Software Livre no Mundo do MicroBlogging
O Software Livre no Mundo do MicroBlogging
Henrique Gabriel Gularte Pereira
 
Estabelecimento e Encerramento de Conexão
Estabelecimento e Encerramento de ConexãoEstabelecimento e Encerramento de Conexão
Estabelecimento e Encerramento de Conexão
Henrique Gabriel Gularte Pereira
 
Olá Python!
Olá Python!Olá Python!
Python no Z6
Python no Z6Python no Z6
Geolocalização com o GMAPS+Wifi
Geolocalização com o GMAPS+WifiGeolocalização com o GMAPS+Wifi
Geolocalização com o GMAPS+Wifi
Henrique Gabriel Gularte Pereira
 

Mais de Henrique Gabriel Gularte Pereira (19)

EBAC Django
EBAC DjangoEBAC Django
EBAC Django
 
Mythbusters - Front in SM
Mythbusters - Front in SMMythbusters - Front in SM
Mythbusters - Front in SM
 
O Estado do Python
O Estado do PythonO Estado do Python
O Estado do Python
 
Não é uma palestra sobre Python
Não é uma palestra sobre PythonNão é uma palestra sobre Python
Não é uma palestra sobre Python
 
Site da UFSM: Django a 700 requisições por segundo
Site da UFSM: Django a 700 requisições por segundoSite da UFSM: Django a 700 requisições por segundo
Site da UFSM: Django a 700 requisições por segundo
 
Python com Django: ganhando espaço em uma Universidade Federal
Python com Django:  ganhando espaço em uma Universidade FederalPython com Django:  ganhando espaço em uma Universidade Federal
Python com Django: ganhando espaço em uma Universidade Federal
 
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
 
Introdução ao Python com Django
Introdução ao Python com DjangoIntrodução ao Python com Django
Introdução ao Python com Django
 
DevOps com Python
DevOps com PythonDevOps com Python
DevOps com Python
 
Welcome to the Django
Welcome to the DjangoWelcome to the Django
Welcome to the Django
 
BogoSort 2.0
BogoSort 2.0BogoSort 2.0
BogoSort 2.0
 
Antigo_Scrum
Antigo_ScrumAntigo_Scrum
Antigo_Scrum
 
Análise do BogoSort
Análise do BogoSortAnálise do BogoSort
Análise do BogoSort
 
Usando o WICD com localizacao fisica de dispositivos
Usando o WICD com localizacao fisica de dispositivosUsando o WICD com localizacao fisica de dispositivos
Usando o WICD com localizacao fisica de dispositivos
 
O Software Livre no Mundo do MicroBlogging
O Software Livre no Mundo do MicroBloggingO Software Livre no Mundo do MicroBlogging
O Software Livre no Mundo do MicroBlogging
 
Estabelecimento e Encerramento de Conexão
Estabelecimento e Encerramento de ConexãoEstabelecimento e Encerramento de Conexão
Estabelecimento e Encerramento de Conexão
 
Olá Python!
Olá Python!Olá Python!
Olá Python!
 
Python no Z6
Python no Z6Python no Z6
Python no Z6
 
Geolocalização com o GMAPS+Wifi
Geolocalização com o GMAPS+WifiGeolocalização com o GMAPS+Wifi
Geolocalização com o GMAPS+Wifi
 

Bogosort [CfC]