Posts Tagged ‘Programação’
Comparação de desempenho: std::vector vs Array
Comparação entre os códigos assembly gerados para operações de indexação básica, dereferenciação eincremento em std::vectors e arrays/ponteiros.
O código assembly foi gerado pelo gcc 4.1.0 chamado com g++ -03 -S em uma máquina x86_64-suse-linux.
#include struct S { int padding; std::vector v< int >; //nosso vector int * p; //nosso ponteiro std::vector< int >::iterator i; //iterador do vector }; int indexar_ponteiro(S & s) { return s.p[3]; } // movq 32(%rdi), %rax // movl 12(%rax), %eax // ret int indexar_vector(S & s) { return s.v[3]; } // movq 8(%rdi), %rax // movl 12(%rax), %eax // ret // Conclusão: Indexar um std::vector é a mesma coisa de indexar um ponteiro. int deref_ponteiro(S & s) { return *s.p; } // movq 32(%rdi), %rax // movl (%rax), %eax // ret int deref_iterador(S & s) { return *s.i; } // movq 40(%rdi), %rax // movl (%rax), %eax // ret // Conclusão: Dereferenciar um std::vector é a mesma coisa de dereferenciar um ponteiro. void incrementar_ponteiro(S & s) { ++s.p; } // addq $4, 32(%rdi) // ret void incrementar_iterador(S & s) { ++s.i; } // addq $4, 40(%rdi) // ret // Conclusão: Incrementar um iterador de std::vector é a mesma coisa de incrementar um ponteiro.
Ou seja, além das facilidades do std::vector, algumas operações básicas tem o mesmo custo tanto com std::vector quanto um array/ponteiro.
Surpreso?
Ranking TIOBE de Linguagens de Programação Nov/2008
Saiu o índice TIOBE de novembro.
O índice TIOBE indica a popularidade das linguagens de programação. O índice é atualizado uma vez por mês. Os mecanismos de busca populares Google, MSN, Yahoo! e YouTube são usados para obter a classificação. Observe que o índice TIOBE não indica qual é a melhor linguagem de programação ou a linguagem que tem maior número de linhas de código escrito.
Posição Nov 2008 |
Posição Nov 2007 |
Variação | Linguagem | Nov 2008 | Variação Nov 2007 |
Status |
---|---|---|---|---|---|---|
1 | 1 | Java | 20.299% | -0.24% | A | |
2 | 2 | C | 15.276% | +1.31% | A | |
3 | 4 | C++ | 10.357% | +1.61% | A | |
4 | 3 | (Visual) Basic | 9.270% | -0.96% | A | |
5 | 5 | PHP | 8.940% | +0.25% | A | |
6 | 7 | Python | 5.140% | +0.91% | A | |
7 | 8 | C# | 4.026% | +0.11% | A | |
8 | 11 | Delphi | 4.006% | +1.55% | A | |
9 | 6 | Perl | 3.876% | -0.86% | A | |
10 | 10 | JavaScript | 2.925% | 0.00% | A | |
11 | 9 | Ruby | 2.870% | -0.21% | A | |
12 | 12 | D | 1.442% | -0.26% | A | |
13 | 13 | PL/SQL | 0.939% | -0.24% | A | |
14 | 14 | SAS | 0.729% | -0.40% | A– | |
15 | 18 | ABAP | 0.570% | -0.08% | B | |
16 | 19 | Pascal | 0.511% | -0.13% | B | |
17 | 17 | COBOL | 0.510% | -0.20% | B | |
18 | 25 | ActionScript | 0.506% | +0.04% | B | |
19 | 23 | Logo | 0.489% | -0.04% | B | |
20 | 16 | Lua | 0.473% | -0.27% | B |
Fonte: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Linguagens de programação – C++ – Direito de defesa
Um dia desses passeando por blogs ví um post que me chamou a atenção. O título é Linguagens de programação – C++ e, claro, chamou minha atenção, não apenas por causa do post assim com também por causa dos comentários sobre o post.
O objetivo desse post não é gerar um flame, até porque não atacarei nenhuma linguagem, só dissertarei sobre fatos.
Escrevendo um Código PHP Seguro
Há uns dois anos atrás o Diego (rand) e eu (na época com nick “ckR”) fizemos uma adaptação/tradução de um artigo postado no Solidox que aborda alguns métodos para tornar seu código mais seguro. O que acontece é que até hoje vejo inúmeras falhas que muitas vezes passam despercebidas para um leigo mas que, para alguém que conhece um mínimo de programação, facilmente poderia causar problemas para esses sitemas.
Aí eu pensei em colocar aqui para divulgar e que para os recém programadores PHP possam ler e levar consigo ao longo de sua jornada com essa fiel linguagem de programação.
O artigo saiu em diversos sites de certo prestígio na área como o PHPBrasil.com o PHPAvancado.net e o HTMLStaff.org. Vale a pena ler.
Segue abaixo, o texto na integra.
Vector? Deque? Stack? Map? List? Como escolher o container STL correto?
Maratona de Programação 2008, eu participei!
mas valeu pela experiência e pela participação.
Passatempo Geek
Sabe aquelas horas que não tem nada pra se fazer?
Se você gosta de programar assim como eu, você poderia estar “gastando” esse tempo participando de programming contests. Já não é de hoje que conheço o site de julgamento online SPOJ (Sphere Online Judge).
É muito simples usar o site. Após o cadastro é só clicar em problems, selecionar o tipo de problema, escolher um dos problemas e começar a programar!
De tempo em tempo são lançados alguns contests (desafios) em que os usuários disputam entre si.
E agora o melhor: existe uma versão brasileira do SPOJ, o SPOJ Brasil.
Os as respostas dos problemas podem ser submetidas em mais de 30 linguagens de programação diferentes!
Pra quem gosta é uma ótima! 😉