� s� impress�o minha, ou os assuntos mencionados no t�tulo deste e-mail
s�o beeem dif�ceis de se absorver? Eu achei de uma dificuldade maior que
os outros assuntos. Algu�m teve a mesma impress�o?
� de extrema relev�ncia que se aprenda logo esses assuntos, antes de
pegar projetos?
Algu�m aqui programa profissionalmente e ainda n�o conseguiu absorver
tais assuntos?
Algu�m aqui programa profissionalmente, domina os assuntos, mas teve
problemas com eles no in�cio?
Espero opini�es! ;)
Grande abra�o a todos! :D
Sao assuntos abordados em curso de ciencia da computacao, portanto tem
um certo desafio, mas um bom livro possibilitara facilmente o
entendimento. Depois desse bom livro dá uma olhada no The art of
Programming, para refinar algumas arestas.
Atc,
Marcos Eike
2010/9/24 Fabiano Vasconcelos <fvasco...@gmail.com>:
> Olá, povo da lista!
>
> É só impressão minha, ou os assuntos mencionados no título deste e-mail são
> beeem difíceis de se absorver? Eu achei de uma dificuldade maior que os
> outros assuntos. Alguém teve a mesma impressão?
> É de extrema relevância que se aprenda logo esses assuntos, antes de pegar
> projetos?
> Alguém aqui programa profissionalmente e ainda não conseguiu absorver tais
> assuntos?
> Alguém aqui programa profissionalmente, domina os assuntos, mas teve
> problemas com eles no início?
>
> Espero opiniões! ;)
>
> Grande abraço a todos! :D
>
> --
> Antes de enviar um e-mail para o grupo leia:
> http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
> --~--~---------~--~----~---------------------------------~----------~--~----~
> [&] Colabore com a Pesquisa de Preferência de Conteúdo para
> Eventos do Grupo C & C++ Brasil:
> http://www.surveymonkey.com/s/GBBGTXN
> ------~----~-------~---~---~---~---~----------------~------------~---------~
> [&] C & C++ Brasil - http://www.ccppbrasil.org/
> Para sair dessa lista, envie um e-mail para
> ccppbrasil-...@googlegroups.com
> Para mais opções, visite http://groups.google.com/group/ccppbrasil
> --~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
> Emprego & carreira: vag...@ccppbrasil.org
> http://groups.google.com/group/dev-guys?hl=en
>
--
Marcos Eike Tinen dos Santos
(Pauca sed matura - uma arvore com poucos frutos maduros! Nao merece
ser admirada)
> É só impressão minha, ou os assuntos mencionados no título deste e-mail são
> beeem difíceis de se absorver? Eu achei de uma dificuldade maior que os
> outros assuntos. Alguém teve a mesma impressão?
A implementação e utilização de estruturas de dados é um tópico
"difícil" no sentido de que esse é um dos fundamentos da computação
aplicada, portanto necessariamente é apresentado quando ainda não
estamos familiarizados com seus conceitos. É meio como aprender uma
língua (humana) nova, no começo é mais difícil precisamente porque
ainda não temos o conhecimento básico de vocabulário e gramática.
Porém, passada a confusão inicial, esses conceitos se tornam "segunda
natureza" para qualquer estudante bem-sucedido.
> É de extrema relevância que se aprenda logo esses assuntos, antes de pegar
> projetos?
Sem dúvida! Estruturas de dados e sua manipulação são parte do
vocabulário básico de qualquer profissional de computação, seja na
indústria ou na academia.
Um desenvolvedor que tenha dificuldade em trabalhar com estruturas de
dados é como um jornalista com dificuldade para escrever: pode até ser
que ele consiga se pendurar em algum emprego, mas sua carreira será
medíocre de ponta a ponta.
--
Ja ne,
Helio Perroni Filho
https://www.google.com/profiles/xperroni
De forma alguma. Árvores como B+ até são mais complicadinhas, mas uma
binária sem balanceamento?
Ou você estaria falando de implementar esses algoritmos e estruturas
de dados em C? Nesse caso entram outros conhecimentos que podem
atrapalhar mesmo o aprendizado.
> Eu achei de uma dificuldade maior que os
> outros assuntos. Alguém teve a mesma impressão?
Não dá pra responder sem saber quais seriam os outros assuntos. Acho
que aprender a provar corretude e completude em lógica proposicional é
bem mais difícil, por exemplo.
> É de extrema relevância que se aprenda logo esses assuntos, antes de pegar
> projetos?
> Alguém aqui programa profissionalmente e ainda não conseguiu absorver tais
> assuntos?
Pelo amor de todos os deuses reais e imaginários, eu realmente espero
que não existam muitas pessoas nessa situação.
> Alguém aqui programa profissionalmente, domina os assuntos, mas teve
> problemas com eles no início?
Desligue da lista e pegue um bom livro. Volte daqui a algumas horas :)
--Stephen
Sent from my Emacs
Em 24-09-2010 11:25, Eike Santos escreveu:
> Bom, sou da opiniao que esses assuntos sao mais importantes do que a
> propria linguagem no qual voce implementara.
> Claro q existem essas estruturas de dados disponiveis para utilizar,
> sem a necessidade de faze-la do zero, mas o importante e entender como
> funciona e onde utilizar. Para quem programa em C ANSI acredito que
> seja de uma grande relevancia, pois vira e mexe temos que implementar
> algumas estruturas de dados.
>
> Sao assuntos abordados em curso de ciencia da computacao, portanto tem
> um certo desafio, mas um bom livro possibilitara facilmente o
> entendimento. Depois desse bom livro d� uma olhada no The art of
> Programming, para refinar algumas arestas.
>
> Atc,
> Marcos Eike
>
> 2010/9/24 Fabiano Vasconcelos<fvasco...@gmail.com>:
>
>> Ol�, povo da lista!
>>
>> � s� impress�o minha, ou os assuntos mencionados no t�tulo deste e-mail s�o
>> beeem dif�ceis de se absorver? Eu achei de uma dificuldade maior que os
>> outros assuntos. Algu�m teve a mesma impress�o?
>> � de extrema relev�ncia que se aprenda logo esses assuntos, antes de pegar
>> projetos?
>> Algu�m aqui programa profissionalmente e ainda n�o conseguiu absorver tais
>> assuntos?
>> Algu�m aqui programa profissionalmente, domina os assuntos, mas teve
>> problemas com eles no in�cio?
>>
>> Espero opini�es! ;)
>>
>> Grande abra�o a todos! :D
>>
>> --
>> Antes de enviar um e-mail para o grupo leia:
>> http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
>> --~--~---------~--~----~---------------------------------~----------~--~----~
>> [&] Colabore com a Pesquisa de Prefer�ncia de Conte�do para
>> Eventos do Grupo C& C++ Brasil:
>> http://www.surveymonkey.com/s/GBBGTXN
>> ------~----~-------~---~---~---~---~----------------~------------~---------~
>> [&] C& C++ Brasil - http://www.ccppbrasil.org/
>> Para sair dessa lista, envie um e-mail para
>> ccppbrasil-...@googlegroups.com
>> Para mais op��es, visite http://groups.google.com/group/ccppbrasil
>> --~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
>> Emprego& carreira: vag...@ccppbrasil.org
>> http://groups.google.com/group/dev-guys?hl=en
>>
>>
>
>
>
Abs! ;)
Em 24-09-2010 11:35, Helio Perroni Filho escreveu:
2010/9/24 Fabiano Vasconcelos<fvasco...@gmail.com>:
É só impressão minha, ou os assuntos mencionados no título deste e-mail são
beeem difíceis de se absorver? Eu achei de uma dificuldade maior que os
outros assuntos. Alguém teve a mesma impressão?
A implementação e utilização de estruturas de dados é um tópico
"difícil" no sentido de que esse é um dos fundamentos da computação
aplicada, portanto necessariamente é apresentado quando ainda não
estamos familiarizados com seus conceitos. É meio como aprender uma
língua (humana) nova, no começo é mais difícil precisamente porque
ainda não temos o conhecimento básico de vocabulário e gramática.
Porém, passada a confusão inicial, esses conceitos se tornam "segunda
natureza" para qualquer estudante bem-sucedido.
É de extrema relevância que se aprenda logo esses assuntos, antes de pegarSem dúvida! Estruturas de dados e sua manipulação são parte do
projetos?
vocabulário básico de qualquer profissional de computação, seja na
indústria ou na academia.
Um desenvolvedor que tenha dificuldade em trabalhar com estruturas de
dados é como um jornalista com dificuldade para escrever: pode até ser
que ele consiga se pendurar em algum emprego, mas sua carreira será
medíocre de ponta a ponta.
Não que eu esteja querendo realmente NUNCA aprender estes conceitos, mas eu tô aqui ponderando se eu posso dar uma empurrada com a barriga por hora, só pra ir me divertindo um pouco com codificação. Eu sei demais que preciso aprender sim, o que eu tô tentando acertar é QUANDO!
Abs! ;)
--
Antes de enviar um e-mail para o grupo leia: http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
--~--~---------~--~----~---------------------------------~----------~--~----~
[&] Colabore com a Pesquisa de Preferência de Conteúdo para Eventos do Grupo C & C++ Brasil:
http://www.surveymonkey.com/s/GBBGTXN
------~----~-------~---~---~---~---~----------------~------------~---------~
[&] C & C++ Brasil - http://www.ccppbrasil.org/
Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
Tem gente que tenta, e daí nasceu, o que para mim é o melhor meme da programação, o termo 'stringly-typed'. Um sistema que só usa strings como type de todas as vars....
Além do mais, entender bem estruturas de dados vai te obrigar a aprender o uso de ponteiros e alocação dinâmica.
---
Eric
www.twitter.com/echiesse
br.linkedin.com/in/echiesse
>> Sem dúvida! Estruturas de dados e sua manipulação são parte do
>> vocabulário básico de qualquer profissional de computação, seja na
>> indústria ou na academia.
>
> Não que eu esteja querendo realmente NUNCA aprender estes conceitos, mas eu
> tô aqui ponderando se eu posso dar uma empurrada com a barriga por hora, só
> pra ir me divertindo um pouco com codificação.
A resposta é "não, não pode". Pelo menos, não sem comprometer
seriamente o seu aprendizado.
> Eu sei demais que preciso aprender sim, o que eu tô tentando acertar é QUANDO!
Eu colocaria os conceitos nesta ordem:
1. "Hello world"
2. Tipos primitivos
3. Funções
4. Controle de fluxo (if, loops, etc)
5. Arrays
6. Estruturas de dados
Ou seja, se você já foi apresentado a um programa trivial, tipos
primitivos, arrays e estruturas "procedurais" de uma linguagem de
programação, o próximo passo é aprender estruturas de dados. Mesmo em
linguagens que já provém estruturas de dados "básicas" (listas,
árvores, etc) o principal trabalho de um desenvolvedor ainda é
construir hierarquias de "tipos", compondo um modelo do problema que o
aplicativo deve resolver. Portanto, é fundamental começar a se
familiarizar com o conceito tão cedo quanto possível.
Olá, povo da lista!
É só impressão minha, ou os assuntos mencionados no título deste e-mail são beeem difíceis de se absorver? Eu achei de uma dificuldade maior que os outros assuntos. Alguém teve a mesma impressão?
É de extrema relevância que se aprenda logo esses assuntos, antes de pegar projetos?
Alguém aqui programa profissionalmente e ainda não conseguiu absorver tais assuntos?
Alguém aqui programa profissionalmente, domina os assuntos, mas teve problemas com eles no início?
Espero opiniões! ;)
Grande abraço a todos! :D
AGORA.
Uma coisa é aprender algoritmos e estruturas de dados. Os conceitos
são teóricos e independem da existência das máquinas que chamamos de
computadores. Algoritmo é feito para ser executado, mas não importa se
é um computador ou uma pessoa que está fazendo isso.
Outra coisa é a implementação desses algoritmos e das estruturas de
dados, que é um mero detalhe. Isso vai variar de acordo com a
linguagem que se está trabalhando(basicamente só a linguagem, porque
todo mundo usa máquinas de Von Neumann mesmo). Mas a teoria nunca vai
mudar e é essa que tem que ser bem aprendida.
Por mais que seja legal ver o negócio funcionando numa tela (e pra
você ver, vai ter que implementar algum tipo de visualização), só se
aprende na base do lápis e papel.
Cada um desses assuntos não leva mais do que algumas horas de estudo
sério para aprender. Já parte de ordenação demora um pouco mais, já
que você precisa estudar vários algoritmos diferentes (muitos deles
recursivos) e já entender pelo menos por cima como se calcula a
complexidade de um algoritmo. Se você já souber calcular a
complexidade e a famosa notação O (as outras você pode ignorar por
enquanto), dá pra entender os algoritmos mais usados em questão de
dias.
Numa faculdade séria você passa pelo menos 6 meses estudando esses e
outros assuntos. Mas se você for autodidata e focar só nesses assuntos
dá pra ententer o básico rapidamente. Aonde básico = suficiente para
implementar na linguagem à sua escolha e entender os usos de cada um,
bom com a complexidade de tempo e espaço. Tudo vai depender da base
que você já tem.
Não é como se alguém estivesse pedindo você para desenvolver um
algoritmo com programação dinâmica. Isso é o básico. É como se um
físico quisesse trabalhar sem estudar as quatro operações. É matéria
de primeiro ou no máximo segundo semestre de qualquer curso de
computação.
--
Assim, muitas vezes eu não consigo "engolir" uma solução sem ter um
problema pra ela. Talvez seja esse o seu caso.
Lembro que quando fiz E.D. na faculdade, de 70 pessoas matriculadas
apenas 9 tiraram nota média ou maior. Eu lembro que um dos pontos
falhos do professor (IMHO) era a falta de exemplos.
De repente compensa começar a fazer alguns programinhas por conta e ir
entendendo o quê e onde se aplica melhor. Os conceitos acabam ficando
triviais com isso.
Abraço
zé
2010/9/26 DQ <d.qu...@yahoo.com>:
Como diria Jim Starkey: "Nosso objetivo deve ser gerênciar complexidade, e não criá-la".
sem a necessidade de faze-la do zero, mas o importante e entender como funciona e onde utilizar."
Digamos que você aprenda a dirigir e ninguém lhe explique para que serve o freio, você vai conseguir ir bem, até chegar no primeiro sinal vermelho...
Mais um me confirmando o que eu j� pensava. Afinal, postgresql, Oracle,
mysql, firebird e outros BDs j� n�o prov�m tudo o que eu preciso? J� n�o
cobrem todos esses assuntos? Se sim, pra que reinventar a roda?
Bom, é simples.É necessário tu saber, pois quando tu precisares usar uma estrutura tu precisa entender qual é a melhor para cada situação.Se tu errar na escolha, tu pode ter um problema futuro, com performance ou mesmo com acesso aos registros, e isso num projeto grande se torna um empecilho maior que o projeto.
http://cpp-next.com/archive/2010/07/algebraic-data-types/
[snip]
--
Felipe Magno de Almeida
Obrigado pela opini�o! :)
> 2010/9/26 DQ<d.qu...@yahoo.com>:
>
>> Fabiano,
>>
>> Eu n�o diria que s�o "beem dif�ceis", tem coisa muito pior...
>>
>> Como j� disseram os colegas, estas estruturas, suas implementa��es e
>> os algor�timos envolvidos fazem parte da base da programa��o. Eu
>> lembro de ter aprendido estas coisas* no primeiro volume de The Art of
>> Computer Programming, que chama justamente "Fundamental
>> Algorithms" (n�o recomendo voc� a come�ar por este livro, pois � bem
>> "pesado" na parte te�rica).
>>
>> Por �ltimo, um pequeno "comercial": no meu blog (http://
>> dqsoft.blogspot.com) eu tenho alguns artigos introdut�rios sobre
>> pilhas, filas, listas ligadas e ordena��o. Quem sabe ajuda um pouco.
>>
>> Daniel
>>
>> * Ordena��o � no terceiro volume. Os algor�tmos s�o muito
>> interessantes, mas a an�lise te�rica n�o � simples.
>>
>>
>> On Sep 24, 11:18 am, Fabiano Vasconcelos<fvasconce...@gmail.com>
>> wrote:
>>
>>> Ol , povo da lista!
>>>
>>> s impress o minha, ou os assuntos mencionados no t tulo deste e-mail
>>> s o beeem dif ceis de se absorver? Eu achei de uma dificuldade maior que
>>> os outros assuntos. Algu m teve a mesma impress o?
>>> de extrema relev ncia que se aprenda logo esses assuntos, antes de
>>> pegar projetos?
>>> Algu m aqui programa profissionalmente e ainda n o conseguiu absorver
>>> tais assuntos?
>>> Algu m aqui programa profissionalmente, domina os assuntos, mas teve
>>> problemas com eles no in cio?
>>>
>>> Espero opini es! ;)
>>>
>>> Grande abra o a todos! :D
>>>
>> --
>> Antes de enviar um e-mail para o grupo leia:
>> http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
>> --~--~---------~--~----~---------------------------------~----------~--~----~
>> [&] Colabore com a Pesquisa de Prefer�ncia de Conte�do
>> para Eventos do Grupo C& C++ Brasil:
>> http://www.surveymonkey.com/s/GBBGTXN
>> ------~----~-------~---~---~---~---~----------------~------------~---------~
>> [&] C& C++ Brasil - http://www.ccppbrasil.org/
>> Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
Adriano
Depende mto do nivel de complexidade dos softwares que vc vai desenvolver, estruturas de dados sao o arroz com feijao de desenvolvedores de softwares de alto desempenho, onde normalmente ate um banco de dados parrudo nao consegue ser rapido o suficiente e te obrigando assim a lidar com td em memoria, por exemplo, mas as aplicacoes onde vc precisa conhecer e eventualmente modificar essas estruturas sao coisas comuns... a nao ser q seu objetivo seja fazer software de padaria ou quem sabe d locadora, nesse caso realmente vc estara perdendo tempo, alias, se for esse o caso, seria melhor tentar uma linguagem menos complexa
Boa sorte!
--
Antes de enviar um e-mail para o grupo leia:
Entendo a angustia do Fabiano... E respondendo a pergunta do amigo Adriano, só para complementar: infelizmente algumas das faculdades no ensinam C/C++.
Nesta ocasião já tive muita complicação envolvendo o tema citado da thread, apesar de muita pesquisa, leitura, e prática.
Mas percebi que até os professores colaboram com isso, visto que alguns não conseguem transmitir o assunto. Então para que nos ensinar a inventar a roda para um curso de computação que é sempre atualizado? Já não nos basta a teoria?
--
Abraços,
Jônata Marcelino
Bacharelando em Ciência da Computação @ UERN
Web Developer, Web Designer e Designer Gráfico
http://www.meadiciona.com/jonata_marcelino
Bom, lista encadeada, fila e pilha s�o assuntos t�o b�sicos que n�o tem
como aprend�-los apenas em teoria.
E n�o � reinventar roda, j� que (talvez de t�o b�sico que seja) C n�o
possui nada pronto a respeito.
Ordena��o e �rvores eu n�o acredito que deva ser prioridade a um iniciante.
Adriano
Mas estamos aqui tamb�m pra questionar voc� a respeito do que �
perguntado. Voc� t� agindo como se apenas as opini�es que batem com o
que voc� acha ser melhor fossem v�lidas, e as outras seriam apenas pra
te desanimar.
Adriano
On 26-09-2010 22:31, Fabiano Vasconcelos wrote:
Em 24-09-2010 14:03, Eric Lemes escreveu:
Olá, Adriano.São assuntos chatos, dificilmente você vai precisar implementá-los na prática (já estão implementado em praticamente toda framework standard de todas as linguagens), mas entender o funcionamento deles te dá a base para aprender a aplicar a estrutura correta para o problema correto e principalmente a teoria de performance de algoritmos.Mais um me confirmando o que eu já pensava. Afinal, postgresql, Oracle, mysql, firebird e outros BDs já não provêm tudo o que eu preciso? Já não cobrem todos esses assuntos? Se sim, pra que reinventar a roda?Se você pensa assim, é melhor aprender outra linguagem que te ofereça "tudo pronto". Por quê quer aprender C/C++?
Adriano
Grande abra�o e boa semana! ;)
Resposta muito bem elaborada, viu? Serve pra mim e pra posteridade!
Em 27-09-2010 08:23, DQ escreveu:
> Fabiano,
>
> Indo por partes, mas n�o necessariamente em ordem...
>
> Estes n�o s�o conceitos ultrapassados.Continuam sendo algumas das
> bases da programa��o.
>
Disso eu j� me convenci.
> D� para usar tudo pronto? Em termos. Como costumam dizer no
> http://www.thedailywtf.com/, num sistema embarcado sem sistema de
> arquivos... A prop�sito, voc� n�o precisa de um BD para ter estas
> coisas, a STL j� basta.
N�o sabia disso.
> Entretanto, se voc� n�o souber um pouco da
> teoria, fica mais dif�cil escolher a op��o certa e us�-la
> corretamente.
>
Desconfiei fortemente.
> Tamb�m n�o acredito que se aprenda a programar apenas enfiando a cara
> em um livro.
Nem eu.
> E olha que eu aprendi a programar em uma �poca em que n�o
> costumava se ter computador em casa! Por outro lado, muita gente j�
> quebrou a cabe�a com estas coisas e ler um livro � uma forma de obter
> este conhecimento.
>
> Considere filas e pilhas, n�o � dif�cil voc� enxergar exemplos
> concretos ao seu redor. Voc� certamente sabe a diferen�a entre o
> funcionamento de uma pilha e uma fila, mas talvez n�o consiga montar
> uma defini��o precisa do que elas s�o. Como simular uma destas filas
> reais no computador?
>
> Dando exemplos pr�ticos:
>
> * imagine que um programa seu recebe de alguma forma mensagens e
> precisa trat�-las uma a uma, na ordem em que foram recebidas. Como
> voc� armazena estas mensagens? Em uma fila.
> * voc� quer implementar uma fun��o de "undo" em um programa, que
> permita ao operador desfazer o que foi feito, do mais recente para o
> mais antigo. Como voc� guarda o que foi feito? Em uma pilha.
> * voc� est� tentando percorrer uma �rvore de decis�es, onde em cada
> ponto voc� tem dois caminhos a seguir. Voc� vai seguir um caminho e
> depois quer retomar o outro caminho. Como voc� guarda estes pontos
> ainda n�o explorado? Neste caso voc� pode usar tanto pilha como fila,
> e os resultados ser�o bastante diferentes.
>
Cara, o que eu acho meio que chato � o fato de entender algor�timos
macarr�nicos, entende? �s vezes voc� n�o entende onde eles come�am e
onde eles terminam. �s vezes voc� n�o sabe para que serve determinado
trecho e �s vezes voc� se perde no meio do caminho, de t�o grande que �
o bicho. Mas eu vou parar de chorar e p�r a m�o na massa o quanto antes. :D
> Sobre "The Art of Computer Programming": � uma obra bastante complexa,
> que tem a pretens�o de esmiu�ar os principais algor�timos. Come�ou a
> ser escrito em 1962, como um �nico volume. Em 1968 saiu o primeiro
> volume do que o autor, Donald Knuth, achava que seria uma s�rie de
> sete. O segundo volume saiu em 69 e o terceiro em 73. Em 77 Knuth
> resolveu investir alguns meses fazendo um programa para facilitar a
> formata��o dos livros; oito anos depois estava pronto o TeX. Somente
> em 2005 come�aram a sair os novos volumes, na forma de cap�tulos. Os
> livros s�o "intensos", com um forte tratamento matem�tico
> (principalmente no que diz respeito � estimativa de tempos de execu��o
> dos algor�timos). Um ponto pol�mico � que todos os exemplos est�o em
> linguagem de m�quina de um computador hipot�tico. Se tiver
> curiosidade, voc� pode encontrar mais detalhes na Wikipedia ou no site
> do autor (http://www-cs-faculty.stanford.edu/~knuth/).
>
Muito boa a resenha! Ficou bem claro.
> Eng. Daniel Quadros
>
>
Obrigado pela ajuda, engenheiro!
Boa semana e grande abra�o! ;)
Sobre "The Art of Computer Programming": é uma obra bastante complexa,
que tem a pretensão de esmiuçar os principais algorítimos. Começou a
ser escrito em 1962, como um único volume. Em 1968 saiu o primeiro
volume do que o autor, Donald Knuth, achava que seria uma série de
sete. O segundo volume saiu em 69 e o terceiro em 73. Em 77 Knuth
resolveu investir alguns meses fazendo um programa para facilitar a
formatação dos livros; oito anos depois estava pronto o TeX. Somente
em 2005 começaram a sair os novos volumes, na forma de capítulos. Os
livros são "intensos", com um forte tratamento matemático
(principalmente no que diz respeito à estimativa de tempos de execução
dos algorítimos). Um ponto polêmico é que todos os exemplos estão em
linguagem de máquina de um computador hipotético. Se tiver
curiosidade, você pode encontrar mais detalhes na Wikipedia ou no site
do autor (http://www-cs-faculty.stanford.edu/~knuth/).
Como é que você pretende utilizar o "poder de fogo" do C sem aprender
coisas simples como pilhas, listas encadeadas, árvores binários e o
mínimo de algoritmos de ordenação?
Se você precisa do "poder de fogo" do C, então é provável que esteja
trabalhando em algo mais complexo e não com software de locadora. Como
é que você pretende escolher os algoritmos e estruturas de dados
corretos sem o básico?
Todo o poder do C vêm da sua complexidade e do seu baixo nível. Só
quem tem paciência para escovar bits é quem realmente aproveita o
potencial.
> Parece que já entram aqui armado contra
> qualquer pessoa que ouse discordar, divergir, questionar ou lamentar algum
> aspecto da linguagem. Parece até religião. Ponteiros são chatos? São sim e
> isso é fato! A maioria, até dominá-los por completo, segue detestando-os!
Aposto que até o John Carmack deve ter esmurrado a mesa de vez em
quando. Isso não invalida a necessidade de aprender.
> E
> isso não tem ninguém que possa dizer o contrário! Não é porque é C ou C++
> que vai ser diferente! E eu estou no meu direito de newbie: abominar, embora
> que temporariamente, certos apectros da linguagem. Um dia isso vai passar,
> eu sei. Mas até lá, dá vontade de jogar tudo pro alto, como alguém que tem
> vontade de arrancar as cordas do violão quando está aprendendo a tocar.
> Acontece que muita gente aqui esqueceu que já foi principiante, que não
> nasceu sabendo e faz comentários do tipo: "Escolhe uma outra linguagem pra
> programar". Eu sei de outras linguagens. Conheço os propósitos de Java, que
> até onde eu saiba não usa ponteiros, Object-pascal, D, etc.
Mas Java tem ponteiros. Não é porque eu não posso fazer aritmética com
eles ou apontar para posições de memória arbitrárias que eles deixam
de ser ponteiros (que tal NullPointerException?).
Usar outra linguagem para implementar essas estruturas de dados é bem
melhor do que tentar bater a cabeça, jogar tudo pro alto ou coisa do
tipo. Se você está chorando para entender esses conceitos simples,
acha mesmo que é uma boa idéia juntar isso à complexidade do C e do
gerenciamento manual de memória?
E se você acha que uma linguagem só nos dias de hoje é o suficiente,
está muito enganado. Até os mais xiitas programadores C usam outras
linguagens como Lua, nem que seja para arquivos de configuração.
> Mas, uma coisa
> que eu não vou deixar é de questionar.
> Ora, se o livro ensina ordenação, pilhas, filas, listas encadeadas e árvores
> binárias e eu sei que existem BDs que já fazem isso por mim, é OBVIO,
> COERENTE, NATURAL e RESPEITOSO (já que esta questão está tão em moda aqui na
> lista) que eu ou qualquer pessoa que queira, faça esse tipo de pergunta. Mas
> sempre aparece alguém pra dizer: "Se não gostou, vai aprender outra
> linguagem". Isso é realmente lamentável.
Se você perguntou, é porque queria uma resposta. Se a resposta não foi
a que você esperava, paciência.
Lamentável é alguém achar que porque o banco de dados já implementa
algo parecido - utilizando árvores B+ que são muito mais complexas que
uma simples binária - a pessoa não tem a obrigação de aprender.
No tempo que foi gasto aqui nessa lista já seria possível terminar de
estudar pelo menos uma estrutura de dados. Pilha, digamos.
> Vou seguir com C e C++ porque eu adoro o poder de fogo que ela proporciona.
Pra mim, isso é como um iniciante querer utilizar um reator nuclear
sem treinamento, quando um gerador a diesel serviria.
> Também gosto de desafios, mas isso não significa que eu precise procurar o
> caminho mais longo e tortuoso pra chegar em determinado destino.
"Vou seguir com C e C++ porque eu adoro o poder de fogo que ela proporciona"
CQD.
Boa sorte com os estudos, o seu questionamento é bastante corajoso
(muitos tem medo de perguntar "pra quê vou usar isso?") e tem
fundamento
zé
2010/9/26 Fabiano Vasconcelos <fvasco...@gmail.com>:
> Em 26-09-2010 17:55, José Luis Segatto Junior escreveu:
>>
>> Eu confesso que não li todos os emails desse tópico, então se alguém
>> já disse alguma coisa parecida peço que me perdoem.
>>
>> Assim, muitas vezes eu não consigo "engolir" uma solução sem ter um
>> problema pra ela. Talvez seja esse o seu caso.
>> Lembro que quando fiz E.D. na faculdade, de 70 pessoas matriculadas
>> apenas 9 tiraram nota média ou maior. Eu lembro que um dos pontos
>> falhos do professor (IMHO) era a falta de exemplos.
>> De repente compensa começar a fazer alguns programinhas por conta e ir
>> entendendo o quê e onde se aplica melhor. Os conceitos acabam ficando
>> triviais com isso.
>>
>> Abraço
>>
>> zé
>>
>>
>
> Cara, tava esperando chegar no teu e-mail pra responder.
> Pois é, eu resolvi exatamente criar um problema pra mim. Estou implementando
> uma agenda de contatos em C, ASCII mesmo, modo console. Nesta agenda eu
> pretendo reunir o máximo de tópicos de C, ou seja, testar tudo que eu
> aprendi - ou penso que aprendi - na leitura do livro. Afinal, só exercitando
> a gente consegue aprender de verdade.
> Quando eu postei essa thread, tinha a esperança de que a maioria iria me
> falar: "Fabiano, tu não precisa mais aprender isso não! São conceitos
> ultrapassados e que agora você já pode pegar tudo prontinho com a postgresql
> - por exemplo". Mas estranhamente isso não aconteceu. Ainda estou por saber
> porque apenas 2 pessoas tiveram coragem de mencionar coisa parecida. O resto
> disse que eu tinha mais era que meter a cara no livro e ir aprender.
> Alguém aqui deve estar me achando um preguiçoso, mas, se existe aqui algum
> engenheiro, sabe que o princípio da engenharia é fazer o trabalho, no menor
> espaço de tempo possível e gastando o mínimo de energia. Se me disserem
> algum argumento que me prove que eu preciso realmente aprender porque será
> indispensavelmente necessário, eu aprenderei com mais afinco e gosto. Se for
> só pra dizer que eu sou um programador "completo" e na prática isso não me
> servir nunca, até aprenderei, mas não será prioridade. Será segundo plano.
>
> Obrigado pela opinião! :)
>>
>> 2010/9/26 DQ<d.qu...@yahoo.com>:
>>
>>>
>>> Fabiano,
>>>
>>> Eu não diria que são "beem difíceis", tem coisa muito pior...
>>>
>>> Como já disseram os colegas, estas estruturas, suas implementações e
>>> os algorítimos envolvidos fazem parte da base da programação. Eu
>>> lembro de ter aprendido estas coisas* no primeiro volume de The Art of
>>> Computer Programming, que chama justamente "Fundamental
>>> Algorithms" (não recomendo você a começar por este livro, pois é bem
>>> "pesado" na parte teórica).
>>>
>>> Por último, um pequeno "comercial": no meu blog (http://
>>> dqsoft.blogspot.com) eu tenho alguns artigos introdutórios sobre
>>> pilhas, filas, listas ligadas e ordenação. Quem sabe ajuda um pouco.
>>>
>>> Daniel
>>>
>>> * Ordenação é no terceiro volume. Os algorítmos são muito
>>> interessantes, mas a análise teórica não é simples.
>>>
>>>
>>> On Sep 24, 11:18 am, Fabiano Vasconcelos<fvasconce...@gmail.com>
>>> wrote:
>>>
>>>>
>>>> Ol , povo da lista!
>>>>
>>>> s impress o minha, ou os assuntos mencionados no t tulo deste e-mail
>>>> s o beeem dif ceis de se absorver? Eu achei de uma dificuldade maior que
>>>> os outros assuntos. Algu m teve a mesma impress o?
>>>> de extrema relev ncia que se aprenda logo esses assuntos, antes de
>>>> pegar projetos?
>>>> Algu m aqui programa profissionalmente e ainda n o conseguiu absorver
>>>> tais assuntos?
>>>> Algu m aqui programa profissionalmente, domina os assuntos, mas teve
>>>> problemas com eles no in cio?
>>>>
>>>> Espero opini es! ;)
>>>>
>>>> Grande abra o a todos! :D
>>>>
>>>
>>> --
>>> Antes de enviar um e-mail para o grupo leia:
>>> http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
>>>
>>> --~--~---------~--~----~---------------------------------~----------~--~----~
>>> [&] Colabore com a Pesquisa de Preferência de Conteúdo
>>> para Eventos do Grupo C& C++ Brasil:
>>> http://www.surveymonkey.com/s/GBBGTXN
>>>
>>> ------~----~-------~---~---~---~---~----------------~------------~---------~
>>> [&] C& C++ Brasil - http://www.ccppbrasil.org/
>>> Para sair dessa lista, envie um e-mail para
>>> ccppbrasil-...@googlegroups.com
>>> Para mais opções, visite http://groups.google.com/group/ccppbrasil
>>> --~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
>>> Emprego& carreira: vag...@ccppbrasil.org
>>> http://groups.google.com/group/dev-guys?hl=en
>>>
>>>
>>
>>
>
> --
> Antes de enviar um e-mail para o grupo leia:
> http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
> --~--~---------~--~----~---------------------------------~----------~--~----~
> [&] Colabore com a Pesquisa de Preferência de Conteúdo para
> Eventos do Grupo C & C++ Brasil:
> http://www.surveymonkey.com/s/GBBGTXN
> ------~----~-------~---~---~---~---~----------------~------------~---------~
> [&] C & C++ Brasil - http://www.ccppbrasil.org/
> Para sair dessa lista, envie um e-mail para
> ccppbrasil-...@googlegroups.com
--
Antes de enviar um e-mail para o grupo leia:
Grande abra�o e boa semana. ;)
> z�
>
> 2010/9/26 Fabiano Vasconcelos<fvasco...@gmail.com>:
>
>> Em 26-09-2010 17:55, Jos� Luis Segatto Junior escreveu:
>>
>>> Eu confesso que n�o li todos os emails desse t�pico, ent�o se algu�m
>>> j� disse alguma coisa parecida pe�o que me perdoem.
>>>
>>> Assim, muitas vezes eu n�o consigo "engolir" uma solu��o sem ter um
>>> problema pra ela. Talvez seja esse o seu caso.
>>> Lembro que quando fiz E.D. na faculdade, de 70 pessoas matriculadas
>>> apenas 9 tiraram nota m�dia ou maior. Eu lembro que um dos pontos
>>> falhos do professor (IMHO) era a falta de exemplos.
>>> De repente compensa come�ar a fazer alguns programinhas por conta e ir
>>> entendendo o qu� e onde se aplica melhor. Os conceitos acabam ficando
>>> triviais com isso.
>>>
>>> Abra�o
>>>
>>> z�
>>>
>>>
>>>
>> Cara, tava esperando chegar no teu e-mail pra responder.
>> Pois �, eu resolvi exatamente criar um problema pra mim. Estou implementando
>> uma agenda de contatos em C, ASCII mesmo, modo console. Nesta agenda eu
>> pretendo reunir o m�ximo de t�picos de C, ou seja, testar tudo que eu
>> aprendi - ou penso que aprendi - na leitura do livro. Afinal, s� exercitando
>> a gente consegue aprender de verdade.
>> Quando eu postei essa thread, tinha a esperan�a de que a maioria iria me
>> falar: "Fabiano, tu n�o precisa mais aprender isso n�o! S�o conceitos
>> ultrapassados e que agora voc� j� pode pegar tudo prontinho com a postgresql
>> - por exemplo". Mas estranhamente isso n�o aconteceu. Ainda estou por saber
>> porque apenas 2 pessoas tiveram coragem de mencionar coisa parecida. O resto
>> disse que eu tinha mais era que meter a cara no livro e ir aprender.
>> Algu�m aqui deve estar me achando um pregui�oso, mas, se existe aqui algum
>> engenheiro, sabe que o princ�pio da engenharia � fazer o trabalho, no menor
>> espa�o de tempo poss�vel e gastando o m�nimo de energia. Se me disserem
>> algum argumento que me prove que eu preciso realmente aprender porque ser�
>> indispensavelmente necess�rio, eu aprenderei com mais afinco e gosto. Se for
>> s� pra dizer que eu sou um programador "completo" e na pr�tica isso n�o me
>> servir nunca, at� aprenderei, mas n�o ser� prioridade. Ser� segundo plano.
>>
>> Obrigado pela opini�o! :)
>>
>>> 2010/9/26 DQ<d.qu...@yahoo.com>:
>>>
>>>
>>>> Fabiano,
>>>>
>>>> Eu n�o diria que s�o "beem dif�ceis", tem coisa muito pior...
>>>>
>>>> Como j� disseram os colegas, estas estruturas, suas implementa��es e
>>>> os algor�timos envolvidos fazem parte da base da programa��o. Eu
>>>> lembro de ter aprendido estas coisas* no primeiro volume de The Art of
>>>> Computer Programming, que chama justamente "Fundamental
>>>> Algorithms" (n�o recomendo voc� a come�ar por este livro, pois � bem
>>>> "pesado" na parte te�rica).
>>>>
>>>> Por �ltimo, um pequeno "comercial": no meu blog (http://
>>>> dqsoft.blogspot.com) eu tenho alguns artigos introdut�rios sobre
>>>> pilhas, filas, listas ligadas e ordena��o. Quem sabe ajuda um pouco.
>>>>
>>>> Daniel
>>>>
>>>> * Ordena��o � no terceiro volume. Os algor�tmos s�o muito
>>>> interessantes, mas a an�lise te�rica n�o � simples.
Adriano
Moral da história: não é preciso ir muito longe para ver que é preciso conhecer *as duas* formas de se trabalhar.
http://www.liquidpoker.net/user_pictures/ce00f.ORLY_Mexican.jpg
Verdade, mas para criar essa abstração eficiente, eu precisava conhecer ponteiros na sua forma mais crua. Tenho sim já classes string, list, vector e map neste código, e criar-los, precisei saber muito mais de que o que foi mencionado aqui; precisei saber como fazer muito copy-paste! :-)
Mas na verdade devo fazer uma confissão. O motivo original para usar o NDK não foi performance; isso apareceu agora que o app está indo para produção. O motivo original para usar o NDK é, ironicamente, portabilidade. Em termos de mobile, C/C++ é praticamente a única opção se se quer portabilidade. Ele roda em Symbian, iOS, Android e Bada, que são os SOs para os quais tenho demandas. Isso é meio off, mas não muito. Só mostra como é importante conhecer C/C++. Aliás, vale mais para C que C++, pois NENHUMA linguagem é mais portável que C.
Não sei como ninguém mencionou isso antes, mas aí vai:
http://www.joelonsoftware.com/articles/LeakyAbstractions.html