Mensagem

Bem-vindo! Ao lado direito do texto desta página, pode-se observar o líder da matilha "Lupinos de RHER" e uma lista de músicas divididas em categorias que pode escutar enquanto permanece na página. A esquerda, o contador com o número total de visitantes que o líder já recebeu aqui, os lobos membros da matilha (ou seja, os seguidores deste blog) e o arquivo deste blog, que está ativo desde 01/08/2010. Abaixo do conteúdo do blog estão os meus animais de estimação virtuais (por favor, alimente-os). Se gostou daqui, por favor faça parte desta família de lobos inteligentes e nos indique a seus amigos: rherwolf.blogspot.com.

30 de set de 2010

Egoísmo e profissionalismo

Terça e quinta-feira. Dia de aula até 19:00. Todos os dias, vou à faculdade de manhã. O dia todo fora. Nem sou acostumado. Ainda completa-se dois meses de rotina nova, não mais preso em casa e sem compromissos não letivos...

E hoje...

Enquanto saio da faculdade, avisto o meu ônibus. Posso usar o 516 e o 503 do Transcol (518 também, mas desaconselhadamente). Naquele momento, passava o 516. Mesmo cansado, eu corro para pegar o ônibus e ir para casa logo! Bem, o ônibus estava em baixa velocidade e eu já estava muito próximo dele, fazendo sinal. O motorista me viu e era fácil parar. Por que não parou?

Nem foi-se muito tempo, passou o ônibus de rota 503. Haviam muitos ônibus parados no ponto, congestionados por chegarem simultaneamente. Aquele que eu queria estava no final, bem longe do ponto, mas era ele. Impacientemente, o motorista decide passar pela faixa do lado e deixar os clientes como eu na mão. O final da história: peguei um 518... 99% cheio... de noite... ele passa numa rota longa... e dois ônibus muito vazios podiam me levar para casa rapidamente, isso se não fosse a existência da mediocridade! Está vendo o que é ignorância? Mesmo o homem trabalhador pode não ser humilde de coração...

Este acontecimento me fez pensar no porque do Brasil não ir a frente. Sempre há um fanfarrão que não está interessado em fazer um trabalho bem feito. Bem, existem motoristas legais que até buscam fora do ponto se fizermos sinal, mas são raros. Mais frequente vemos os que te largam no ponto. Nem querem saber! Pergunta: quem nunca foi deixado no ponto de ônibus sem algum motivo...? Sei que o cara rala, recebe pouco e tudo, mas eu e muitos outros dependem dum serviço bem feito...!

Incrível é como o cara, sendo trabalhador, não entende a situação do rapaz que passa o dia todo fora, trabalhando, estudando, pesquisando e outras coisas. Se não fosse egoísta, teria a compreensão e não desrespeitaria o direito de utilizar o serviço oferecido por ele. Não é só uma pessoa que trabalha até a noite! Não é impossível alguém ficar até tarde estudando ou cursando! Até mesmo aqueles que saem de noite para ver alguém merece algum crédito. Sabe, é esse mesmo o cara que quer greve logo na primeira desculpa. Luta pelos direitos? Ouvi falar que a greve é a última alternativa, mas a maioria deles não pensa assim... ah, e como ficamos quando isso nos pega de surpresa? Meus estudos atrasavam...


Um motorista de ônibus furioso é bem capaz de fazer isso...   XD


Olhando por um lado mais global, o homem que tem um emprego garantido não costuma ter grandes preocupações. Quais são as chances de uma pessoa gravar alguma identificação a noite de forma que sua falta de ética seja denunciada? Na política, isso é muito visível. As consequências da falta de profissionalismo agem muito fortemente.

Eis um grande defeito que define o caráter de um homem. Foi assim que muitas pessoas morreram nos hospitais, foram assaltadas a noite num ponto de ônibus, comeu algum alimento intoxicado no restaurante... coisas que parecem pequenas acabam com uma vida por culpa de um panaca desprezível.

Revoltante...

_______________________________________________________________


Atualização!
Estas postagens de uma comunidade do orkut são bem construtivas.

André Luiz 03/10/10

"Interessante o texto sobre o onibus passar direto. Eu tambem sofro pacas com onibus lotado e que deixa a gente pra tras. Mas tenho o costume de andar ali na frente e volta e meio escuto conversa de motorista. Nesse caso descrito por voce, o motorista te "abandona" pois crê que o que vem atras te pegará no ponto. Ele acaba de certa forma pensando em todo o resto que já está levando, pois não pode atrasar a viagem de todos. Creio que metade dos motoristas que fazem alguma "sacanagem" com agente, não faz por mal. O que resolveria mesmo é a empresa deixar de ser FDP e colocar mais onibus pra rodar nos horarios de pico. No fim das contas, quem presta um mal serviço é a transportadora de forma geral, não o motorista."


"Na verdade, esperar que o onibus la atraz o pegue eh uma desculpa esfarrapada. E se o onibus la atraz for um que nao passa na rota que desejamos/precisamos? E se o proximo onibus que nos serve, na verdade, esta bem longe...? E se a viagem dos passageiros nao estiver tao problematica? E se o cara la no ponto eh quem esta atrasado? Afinal, eh obrigaçao levar a quem esta no ponto desde que ainda caiba gente no onibus. Pressa nao eh desculpa! Havendo atraso, a culpa nao eh do motorista e sim do transito, mas largar o cara no ponto nao o faz inocente a nao ser que seja por falta de atençao e ainda assim uma falta de atençao no volante eh terrivel. Todos sabem disso! Nao tem como o motorista adivinhar quem esta atrasado ou nao e deve tratar a todos com igualdade. Nao acredite nessa desculpa. Mas realmente o maior culpado eh sempre o burgues porque pensa que nao precisa se preocupar com nada alem da sua grana..."

25 de set de 2010

Política contemporânea no Brasil

Eu acho que é impossível existir uma política mais irritante que a brasileira e mais ainda é inverter o quadro. Como acabará a corrupção? Por que a nossa política é a pior? Por que só voto nulo? Falarei apoliticamente sobre a política.

Sabe por que o voto é obrigatório? A desculpa é que as pessoas não votariam se não fosse. Mas uma coisa eu não entendo. Se já houve no Brasil a luta pelo direito de votar, por que hoje é obrigação? Quem queria o direito já tem, mas e agora?  Ninguém precisa ser obrigado a votar hoje em dia. Isso só nos gera perdas. Não podemos obrigar as pessoas a utilizar o direito que têm, nem por questão de consciência e responsabilidade. Não adianta mesmo...

Tudo bem, existem os que não se interessam e têm preguiça de influenciar nas decisões que mudarão o país. Ainda assim, a maioria dos que não querem votar simplesmente admitem que não sabem em quem votarão ou mesmo não têm as mínimas condições de fazê-lo. E aí? Vale a pena jogar na sorte quando falamos de política? E se o eleitor, que não sabe em quem votar, resolve vender o voto? Afinal, o voto pra ele não faz diferença e gerou ganho.

Está aí! O voto permanece obrigatório e ajuda os políticos mais safados a tirar proveito dos pobres necessitados. Não adianta fingir que todos votam com uma total consciência! O voto obrigatório não tem sentido, tanto que ninguém obriga um eleitor a votar pelo menos em um candidato que não seja nulo. Isso apenas força o eleitor a sair de casa e perder algumas horas do dia, além de abrir mais uma possibilidade de ações ordinárias na política.

Não ache certo crer que todos têm que ter consciência, responsabilidade e inteligência para aplicar o seu "direito" de votar. Sempre haverá alguém sem perícia para agir nesta área do conhecimento. Como pode alguém concordar com a obrigação de votar e ainda amar o Brasil? É ilógico um cidadão inteligente possuir as duas propriedades simultaneamente (pelo menos após ler este texto... mas será que alguém pode provar que não?).

Outra coisa que me gera descrença e desgosto é o fato de que nunca podemos garantir que um candidato fará o certo. Quando o desconhecemos, não sabemos se as suas promessas e seus projetos são apenas instrumentos manipuladores. Maior parte dos eleitores só pode confiar na cara do candidato que aparece na TV! Quem pode ler a mente do político e descobrir se é ordinário o não? E pior: se um político com fama de bonzinho descobre um golpe, ele é ASSASSINADO! Só fica quem é malandro. Os outros fogem com o rabo entre as pernas quando encaram a realidade de frente se tem amor à vida.

No final das contas, me pergunto se vale a pena votar. Que diferença faz...?!! Sinceramente, mesmo que só o 1% da população mais apta votasse, não faria diferença. Garantidamente, não pioraria. Mas como isso conseguiria mudar a situação? Sinceramente, isso me causa 100% de desinteresse na política.

Em que está pensando? Concorda comigo em algum ponto?
Ainda pretende reservar um bom tempo pensando em quem votará?
Irá se dedicar a isso quando poderia ler um livro bem construtivo...?
Tem uma boa ideia de como melhorar as coisas? O que fará agora?

20 de set de 2010

Programação básica

Quem nunca ouviu a palavra "algoritmo" em sua vida? Lembra-se do algoritmo de Euclides para calcular o MDC (coisa do ensino fundamental)? Algoritmo é a sequência de instruções que, ao seguida em ordem, nos leva a alguma coisa. É claro que um algoritmo mal feito nos leva a uma complicação no lugar da solução.

A programação está 100% baseada na idéia de algoritmos. Quando queremos criar um programa, precisamos pensar nos procedimentos a se fazer de modo que possamos obter a solução. Um pequeno exemplo é o cálculo de fatorial. Como calculamos 4! manualmente? Seria assim: 5! = 5 . 4 . 3 . 2 . 1 = 120 .

Computacionalmente, podemos revelar esta relação: se "n = 0", "n! = 1", caso contrário, "n! = n . (n-1)!". Daí, o procedimento está definido. Para 5!, nós temos: 5! = 5 . (4!) = 5 . 4 . (3!) = 5 . 4 . 3 . (2!) = 5 . 4 . 3 . 2 . (1!) = 5 . 4 . 3 . 2 . 1 . (0!) = 5 . 4 . 3 . 2 . 1 . 1 = 120. O PC faz tudo passo a passo do jeito que o ensinamos.

Simples, não é?

Na verdade, este é o básico. Num programa, há preocupações como:
1 ) Interação entre o usuário e o programa (como o usuário dirá o valor de n?);
2 ) Tratamento de exceção (se n<0, não há n!, então como impedir este erro?);
3 ) Possibilidade de opções (se o programa for bom, pode não só calcular n!);
4 ) Procedimentos para obter a solução;
5 ) Uso da solução (talvez para obter outra solução com outro procedimento);
6 ) Revelação do resultado final para o usuário.
Há casos em que temos mais preocupações.
Nós podemos aprender a fazer cada etapa.

Essa é uma das coisas que um programador aprende. Parece complicado, mas na verdade não é fácil escrever uma poesia ou compor uma música ou ainda projetar uma obra. Por que os grandes softwares seriam de tão fácil produção? Tudo tem um conhecimento básico que pode nos levar a um mais avançado gradativamente. Além disso, tudo é procedimento ou informação, só.

Além do conceito de algoritmos, ainda precisamos aprender mais conceitos que nos permite produzir mais facilmente programas complexos. Citarei exemplos:

1 ) Abstração >> Despreze dados inúteis do problema para que possa solucioná-lo. Como alguém calculará o volume de um objeto se preocupando com todas as suas características (cor, beleza, condições de conservação...)? Quando não há uso para algo, não podemos pensar em onde utilizar tal dado. Fazê-lo é perda de tempo e apenas causará confusão. Isso torna o trabalho mais humano.

2 ) Modularização >> Sabendo que dados são necessários para um problema e como se dividem os procedimentos do mesmo, podemos repartir este problema em subproblemas, cada um com um algoritmo peculiar, e uní-los em um algoritmo. Isso ajuda a abstrair-se, pois algo útil no programa pode ser inútil em uma etapa e tal acontecimento possibilita algumas simplificações no problema para resolvê-lo bem mais tranquilamente. Cuidado: isso exige prática! Erros e confusões são muito comuns no início. Programadores precisam de um pouco de imaginação.

3 ) Recursão >> Há problemas que são recursivos e o computador pode tratá-los de maneira especial. Um exemplo é o fatorial. O procedimento recursivo seria: "n! = n . (n-1)!" e há uma condição de parada "0! = 1". Existem muitas variedades de problemas recursivos (não só matemáticos) com características bem distintas.

4 ) Reuso de código >> Está ligado à modularização. Quando modularizamos, costumamos dividir algoritmos e cada parte tem uma referência. Quando nós precisamos de uma em especial (por exemplo, preciso calcular um fatorial ou uma potência ou cosseno ou algo assim), podemos chamá-la por meio da sua referência. Isso possibilita várias chamadas do mesmo por meio de um simples comando que, mesmo repetidas vezes, usa o mesmo código. Este reuso também ocorre entre programadores: um cria um recurso novo, outro o utiliza em seus serviços e projetos. Interessante, não? Isso permite o trabalho em equipe, que adianta um grande projeto. Na certa, um conceito fundamental.

5 ) Linguagem de programação >> É a ferramenta principal de um programador. Cada uma tem suas vantagens e desvantagens, suas abordagens peculiares, intenções de uso e conceitos especiais. Coisas como a legibilidade, rapidez, eficiência, segurança, ferramntas disponíveis, simplicidade e facilidade que a linguagem oferece para aprendê-la são atributos muito analisados. Quando uma linguagem possui muito de um atributo, outro costuma ser menor. Existe a conveniência entre as linguagens e tipos de programas que podemos mais facilmente produzir utilizando cada linguagem. É importante destacar o fato de que cada linguagem exige uma maneira de pensar bem diferente, logo um programador deve especializar-se em algumas ou ser simplesmente genial a ponto de conhecer a arte da versatilidade mental.

6 ) Teste e correção >> É quase impossível encerrar com sucesso um grande projeto sem testes e correções. Não é bom testar tudo apenas no final, mas sim testar cada recurso a medida que é terminado para facilitar a correção. Os testes têm que ser bem dinâmicos para pegar erros muito sutis. Esta etapa exige um pensamento estratégico e muita paciência.

Não precisamos pensar apenas em problemas matemáticos. A computação pode resolver vários tipos de problemas. Como gerenciar cadastros? Qual é a melhor das mil escolhas que estão numa lista? Como eu resolvo o problema da "Torre de Hanói"? Qualquer coisa que pode-se resolver por instruções é possível para o computador. Bom é que ele faz o trabalho exaustivo para nós (basta ensinar o procedimento). Acredito que ser um programador é conhecer a arte de pensar. Precisamos saber resolver para ensinar o computador a fazê-lo.

15 de set de 2010

Seriedade na computação

Muitos acreditam que a computação é um conhecimento insano que envolve complexidade exagerada, como se os programadores precisassem entender instintivamente o que o computador diz e raciocinar como se fosse um. Na certa, o PC é uma máquina poderosa capaz de fazer muito em pouco tempo (há vezes que nem é suficiente), mas não significa que precisamos ter este mesmo poder para trabalhar com ele (se o tivéssemos não precisaríamos deles).

Para explicar como é errado pensar que a computação é um conhecimento bem anormal, devemos revelar o mundo da computação que a maioria desconhece. Fato é que já houve uma época que tais conhecimentos eram mesmo insanos. Quando surgia a computação, a manipulava-se diretamente o hardware (a máquina física), ajeitando os botões para definir valores binários, tanto comandos de máquina quanto dados.

Foi uma época negra! Os computadores eram lentos, exigiam bastante conhecimento e o aquecimento do equipamento (bem grande) era muito perigoso. Com o passar do tempo, ideias geniais contornaram o problema.

Muitas coisas ajudaram no desenvolvimento da área da informática (que é a que mais cresce). A ideia de software (a máquina abstraída do hardware, ou seja, a mensagem concreta que os circuitos do PC nos oferece) nos escondeu a caótica necessidade de manipular números binários. Um importante software é o sistema operacional, que permite usar os dispositivos, programas e outros recursos sem entendê-lo fisicamente. Foi um avanço tão grande que até vovó e o vovô podiam tirar a maior onda lá nos sites de relacionamentos! Afinal, é mais sugestivo ver janelinhas e figuras ou utilizar comandos binários?

Com o tempo, a insanidade virou um trabalho organizado e com um sério grau de profissionalismo. Na certa, a construção do hardware (parte física, concreta do computador, que executa o software), sistema operacional, programas, redes e tudo mais é muito complexo. Em compensação, o trabalho em equipe e divisão do mesmo em áreas faz com que cada um necessite apenas da especialidade em uma das tais áreas para que o serviço se complete.

Com isso, grandes técnicas e avançados conhecimentos surgiram a ponto de termos computadores realizando bilhões de somas num segundo (quando houve épocas que mal chegavam a milhões) sem a necessidade de alguém saber tudo sobre eles (quem sabe é um gênio, na certa).

Nos dois próximos parágrafos, utilizarei termos um pouco menos leigos.
O objetivo não é acabar com a didática. Espero que todos possam entender...

Já que um faz o processador, outro a memória principal (RAM), outro ainda a secundária (HD), o monitor, a impressora, o teclado, o mouse e cada aparelho independentemente, eles pode evoluir bastante. Após um fazer o sistema operacional, nem o programador precisa se preocupar com o funcionamento profundo da máquina.

Aí, alguém faz facilmente um compilador de uma linguagem (programa que, a partir de textos com comandos numa linguagem de programação, é capaz de gerar programas projetados) e os programadores já podem fazer o seu trabalho só de aprender a linguagem correspondente à do compilador criado. Pode-se, com isso, criar novos editores de texto, as calculadoras, os navegadores, os jogos e tudo o que é software, até mesmo outro sistema operacional (e mais rapidamente em relação ao primeiro).

Melhorando as coisas, os projetos de softwares utilizam recursos e técnicas que permitem muito avanço. Os programas são produzidos com novos conceitos para simplificar e agilizar o trabalho para produzir um grande programa mais rapidamente. Há pessoas que trabalham com o objetivo de oferecer uma linguagem que melhora as coisas neste aspecto. A linguagem criada satisfaz um perfil de programador e cada vez mais linguagens com novas abordagens e ideias surgem.

O programador escolhe dentre cada vez mais opções, podendo criar programas mais poderosos. Com tudo cada vez mais fácil, os programadores podem utilizar toda a sua criatividade e genialidade em outros detalhes, permitindo um trabalho mais elaborado, dando mais rendimento à inteligência dos mesmos. Facilidade e rapidez dão poder.

Hoje, fazer uma minicalculadora não é difícil a ponto de precisar de um QI elevadíssimo por causa dos avanços, mas se tem genialidade aproveite e faça calculadoras avançadas, que integram numericamente, resolvem equações diferenciais... ou seja, grandes projetos do passado são hoje pequenos.

Resumindo, ninguém precisa saber tudo sobre o computador. Se um faz um bom trabalho, o do outro evolui. O mutualismo faz da computação uma área muito promissora. Projetos grandes em grupo são mais facilmente completados e há vezes que técnicas espertas de programação geram ganhos de muitos possíveis tipos: economia de esforço humano e tempo, aumento na qualidade e rapidez do programa produzido, entre outros.

Não pense que todos os programadores são loucos.
Nem mesmo os engenheiros computacionais e fabricantes de peças de PCs.
Existe organização e esperteza no trabalho com computação. Pode acreditar.