Oh NoeZ...
...The interwebz are down!!!
Os lookups DNS dão timeout, todos os traceroutes que tento fazer para sites europeus vão dar a volta aos EUA, a CPRM mostra uma ocupação de 10% nas linhas internacionais, com um round-trip time de 500ms para Miami...
Tudo isto desde a meia-noite...
Mas parece estar a melhorar agora... se calhar é melhor voltar a meter forwarders no meu BIND...
Os lookups DNS dão timeout, todos os traceroutes que tento fazer para sites europeus vão dar a volta aos EUA, a CPRM mostra uma ocupação de 10% nas linhas internacionais, com um round-trip time de 500ms para Miami...
Tudo isto desde a meia-noite...
Mas parece estar a melhorar agora... se calhar é melhor voltar a meter forwarders no meu BIND...
Know Thy Tools!
Há alguns anos a minha linguagem de eleição era claramente o C... minimalista, elegante, consistente... o caminho certo para produzir software altamente performante e livre de gorduras, a forma de ter total controlo sobre a máquina sem ter de recorrer ao assembly*.
O Java era para os fracos... Os programadores a sério não têm medo de fazer mallocs e resolver segmentation faults. E as chamadas linguagens de scripting... só serviam para desenvolver código descartável ou automatizar pequenas tarefas, nada mais.
Hoje... Não deixei de considerar o C uma linguagem potente e elegante, mas deixei de o considerar a minha linguagem de eleição...
Como diz o Donald Knuth...
Na maioria dos casos o design é bem mais importante para a performance do que uns quantos ciclos de CPU poupados em cada chamada de função, ou uns quantos bytes de memória poupados à custa do controlo manual da alocação de memória.
Uma linguagem que facilite a implementação de bons algoritmos e boas estruturas de dados pode permitir chegar a um nível aceitável de performance, sem consumir demasiada memória. Tudo isto poupando muito tempo de programação, com muito menos erros, e com robustez acrescida**.
Noutros casos os pontos críticos para a performance do sistema estão bem definidos e podem ser desenvolvidos (em C) como módulos que expõem uma API para uma linguagem de mais alto nível, conseguindo-se o melhor dos dois mundos.
Podemos começar por desenvolver tudo em Python, por exemplo, e depois reimplementar os pontos críticos em C. Esta é, aliás, a forma como muitos dos módulos da biblioteca standard do Python são desenvolvidos...
E ainda existem aquelas situações onde os gargalos estão fora do âmbito da aplicação, e qualquer penalização imposta pelas linguagens de alto nível acaba por ser irrelevante... Não faz sentido perder muito tempo a optimizar código que vai estar quase sempre à espera de resultados vindos de uma base de dados.
Resumindo... hoje não tenho propriamente uma linguagem de eleição, tenho várias. Umas vezes será o C, outras vezes Java, outras vezes Python. Os requisitos de performance, o tempo disponível, e as características e complexidade do problema são factores importantes na escolha, e devem ser avaliados em conjunto.
* Não, nunca fui assim tão maluco...
** Levante a mão quem verificar o return value de cada
O Java era para os fracos... Os programadores a sério não têm medo de fazer mallocs e resolver segmentation faults. E as chamadas linguagens de scripting... só serviam para desenvolver código descartável ou automatizar pequenas tarefas, nada mais.
Hoje... Não deixei de considerar o C uma linguagem potente e elegante, mas deixei de o considerar a minha linguagem de eleição...
Como diz o Donald Knuth...
Premature optimization is the root of all evil.
Na maioria dos casos o design é bem mais importante para a performance do que uns quantos ciclos de CPU poupados em cada chamada de função, ou uns quantos bytes de memória poupados à custa do controlo manual da alocação de memória.
Uma linguagem que facilite a implementação de bons algoritmos e boas estruturas de dados pode permitir chegar a um nível aceitável de performance, sem consumir demasiada memória. Tudo isto poupando muito tempo de programação, com muito menos erros, e com robustez acrescida**.
Noutros casos os pontos críticos para a performance do sistema estão bem definidos e podem ser desenvolvidos (em C) como módulos que expõem uma API para uma linguagem de mais alto nível, conseguindo-se o melhor dos dois mundos.
Podemos começar por desenvolver tudo em Python, por exemplo, e depois reimplementar os pontos críticos em C. Esta é, aliás, a forma como muitos dos módulos da biblioteca standard do Python são desenvolvidos...
E ainda existem aquelas situações onde os gargalos estão fora do âmbito da aplicação, e qualquer penalização imposta pelas linguagens de alto nível acaba por ser irrelevante... Não faz sentido perder muito tempo a optimizar código que vai estar quase sempre à espera de resultados vindos de uma base de dados.
Resumindo... hoje não tenho propriamente uma linguagem de eleição, tenho várias. Umas vezes será o C, outras vezes Java, outras vezes Python. Os requisitos de performance, o tempo disponível, e as características e complexidade do problema são factores importantes na escolha, e devem ser avaliados em conjunto.
* Não, nunca fui assim tão maluco...
** Levante a mão quem verificar o return value de cada
scanf, ou de cada write, em C... O que acontece à vossa aplicação se a função retornar sem ter processado todo o input, ou sem ter escrito a totalidade do buffer? E para quem levantar a mão... Conseguem ver código útil no meio de toneladas e toneladas de error handling?
XP Phone Home...
Segundo esta notícia... (mais detalhes)
A Microsoft alega que isto é uma medida de segurança, para que a Windows Genuine Advantage Notification Tool possa ser desactivada em caso de necessidade, mas não deixa de ser um abuso de confiança... Sabe-se lá que informação esta ferramenta envia, e sabe-se lá que informação ela pode vir a enviar amanhã...
Que a Microsoft queira dar cabo do negócio aos piratas, tudo bem, agora largar spyware em cima dos utilizadores legítimos?... Acho que isto está a começar a ir longe demais(*)...
(*) Mentira, começou logo no dia em que se lembraram das "activações".
Microsoft Corp. acknowledged Wednesday that it needs to better inform users that its tool for determining whether a computer is running a pirated copy of Windows also quietly checks in daily with the software maker.
A Microsoft alega que isto é uma medida de segurança, para que a Windows Genuine Advantage Notification Tool possa ser desactivada em caso de necessidade, mas não deixa de ser um abuso de confiança... Sabe-se lá que informação esta ferramenta envia, e sabe-se lá que informação ela pode vir a enviar amanhã...

Que a Microsoft queira dar cabo do negócio aos piratas, tudo bem, agora largar spyware em cima dos utilizadores legítimos?... Acho que isto está a começar a ir longe demais(*)...
(*) Mentira, começou logo no dia em que se lembraram das "activações".




