Visite também: Currículo ·  Efetividade BR-Mac

O que é LinuxDownload LinuxApostila LinuxEnviar notícia


O que fazer com o C que se aprendeu na faculdade

Enviado por Fernando Mercês (fernandoΘmentebinaria·com·br):

“Em muitas faculdades brasileiras a linguagem C é ensinada aos alunos de cursos de tecnologia. Mesmo assustando os novatos, a maioria resiste e vence a matéria.

O problema é entender por qual motivo o C foi escolhido para iniciar o curso de programação. Seria uma linguagem didática para se aprender a programar? Ou é um teste para ver quem tem ou não o “jeito pra coisa”?

Alguns diriam que o correto seria começar com Pascal, mas há quem defenda linguagens mais modernas como Python, Perl, Ruby ou PHP. E aí, pra que serve o C no primeiro período? Neste artigo farei uma análise sobre o que se aprende da linguagem, o motivo pelo qual ela surge no início do curso, seu valor de mercado e o que é possível fazer com esse start que a faculdade nos dá. ” [referência: mentebinaria.com.br]


• Publicado por Augusto Campos em 2011-01-09

Comentários dos leitores

Os comentários são responsabilidade de seus autores, e não são analisados ou aprovados pelo BR-Linux. Leia os Termos de uso do BR-Linux.

    O começo é com pseudocódigo. Eu acredito que uma linguagem de script seja mais simples para um intermediário, mas depende muito mais do professor do que da linguagem o desempenho de turmas iniciantes; explicar a existência do compilador, do linkeditor, detalhar o funcionamento das funções, parâmetros e passagens por valor e por referência não é nem mesmo algo que consuma um semestre inteiro, ademais didática e prática são o suficiente pra ensinar preceitos básicos de uma linguagem em uma carga horária de 80 horas.

    Weber Jr . (usuário não registrado) em 9/01/2011 às 2:00 pm

    Desconfie da faculdade que viver nas modinhas.

    Essa semana vi uma lista de “tendências a ficar atento em 2011″.

    Lá se falava em NoSQL, Javascript no servidor…

    O caminho que estamos seguindo, sempre buscando conforto a todo custo.

    Para quem sabe uma linguagem e busca facilidade, ótimo. Como quem sabe programar em C/C++, usa essas, mas agiliza com python, por exemplo.

    O Caso é que cada vez mais surgem programadores que SÓ sabem Javascript. Saiu do mundinho do browser, arrepiam.

    Falou em ponteiro então…

    Mas não adianta, alguém precisa continuar desenvolvendo nessas linguagens menos fashion, ainda que seja para facilitar a vida dos outros criando as VMs e Browsers.

    Juliano (usuário não registrado) em 9/01/2011 às 2:10 pm

    Dá para se discutir muiiiiito sobre o tema, mas em geral, pouco importa a linguagem (nos cursos de graduação). O importante são os conceitos apresentados (Estruturas básicas, variáveris, lógica, loops, listas, etc…) que serão utilizados pelo resto da vida do aluno.

    Só prego que seja uma linguagem multiplataforma e de fácil acesso ao aluno (download grátis para fins educacionais, etc).

    Trx64 (usuário não registrado) em 9/01/2011 às 2:15 pm

    Concordo com o início usando C. Linguagens modernas abstraem conceitos como ponteiros e gerenciamento de memória. Programadores que não tenham essas noções são apenas maus programadores.

    Mesmo em linguagens modernas, com garbage collectors e por aí vai, é necessário conhecer como a memória é gerenciada, aí vem a importância de C.

    Mas concordo com o @sombriks em relação à começar com pseudocódigo. Primeiro o algoritmo e a lógica, depois a implementação.

    tenchi (usuário não registrado) em 9/01/2011 às 2:23 pm

    @Weber Jr, não exagere… Eu atualmente programo mais em C e C++ (tem gente que diz que C e C++ são coisas distintas, mas é quase impossível criar alicações em C++ sem usar alguma lib em C).

    Mas sei que C não serve pra tudo. Uma das coisas que tenho achado bastante interessante é Javascript fora do navegador. Isso tbm em s etratando de performance, onde engines como o V8 e o SpiderMonkey têm um bom desempenho, próximo à linguagens como python ou java.

    Aprender lógica de programação em C não é bom. Umadas razões é pq te obriga a entender coisas de baixo nível, o que é bom para quem é da área de computação, mas nem todo mundo que precisa programar é computero. Sim, programação é disciplina de muito curso que não computação,

    Mas pra quem for da área, creio que C seja obrigatório. Como dito acima, ensina o porque daquela coisa de passagem por parametro, valor (na verdade em C é tudo por valor).

    Eu particularmente acredito mais em linguagens padronizadas, como C, Lisp, Haskell, C#, ECMAscript, dp que em linguagens proprietárias como Delphi, Java, Python, PHP, mesmo sabendo que elas tem vários pontos positivos. Mas tem um ponto negativo que é a possibilidade de morrerem do nada por dependerem de determinadas empresas/organizações. O próprio Java já mostrou seus tentáculos.

    Mas o que o aluno deve ter sempre em mente é que a linguagem é só uma ferramenta para que ele possa solucionar um problema. Quando a linguagem se torna um limitante, usa-se outra.

    Ok, isso é bonito na teoria. Na prática o buraco é mais embaixo :-)

    Conhecem o G-portugol? Muito boa e didática :-)

    Tércio Martins (usuário não registrado) em 9/01/2011 às 2:49 pm

    Na minha universidade, a disciplina da introdução à programação é dada em três linguagens: C para os cursos de Computação, Java para Engenharia Mecatrônica e Pascal para o resto da humanidade =D

    Concordo que não dá para ensinar uma linguagem que te entrega tudo na mão para quem está na Informática, mas só definir a linguagem para o ensino não é a solução para criar bons profissionais. Vejo vários professores, ansiosos para ensinar muito em pouco tempo, desleixarem com a didática, colocando nos exercícios e avaliações um nível de dificuldade exagerado.

    Não estou menosprezando a disciplina do ensino de programação, mas digo que esta “rigidez” mais projudica que ajuda ao criar alunos que, em vez de se dedicarem à resolução de problemas de forma autônoma, correm para o caminho mais fácil: copiam códigos da Internet, criam esquemas de cola nas provas… E esses alunos, ao irem para o mercado de trabalho, continuam com o mesmo comportamento. Os que não recorrem a isso são – quase sempre – os que já sabiam programar antes da faculdade e os que desistem da disciplina no meio do curso :(

    Tércio Martins (usuário não registrado) em 9/01/2011 às 3:13 pm

    Onde escrevi “projudica” (3º parágrafo), leia-se “prejudica”.

    Jack Ripoff (usuário não registrado) em 9/01/2011 às 3:43 pm

    Aprender C é essencial. Primeiro porque metade do universo é escrito em C. Segundo porque, frequentemente, quem não aprende C e vai direto para uma linguagem de programação orientada a objetos acaba tendo dificuldades em manejar as referências aos seus objetos corretamente, simplesmente porque ele não aprendeu a lidar com ponteiros. Terceiro porque os programadores precisam compreender melhor conceitos básicos de segurança com strings e com o manuseio de memória. E quarto (e talvez mais importante) para motivar os novos programadores a não usarem C, pois vendo como essa linguagem é horrível eles vão querer usar linguagens gerenciadas.

    Já passou da hora do nosso software ser escrito em linguagens gerenciadas por questões de segurança e de portabilidade.

    Aprender assembly é útil para entender chamadas de funções, pilha (stack), monte (heap), e outras besteiras que não vão fazer muita diferença na vida do típico programador. Portanto o ensino do assembly deve ser reservado somente aos mais corajosos (e loucos – ou engenheiros elétricos)…

    Agora, seria bom se os nossos alunos aprendessem orientação a objetos com uma linguagem decente como o Ruby, e não com Java. Talvez fosse bom pelo menos em algum momento de suas vidas conhecer uma linguagem funcional como o Scheme e brincar um pouco com programação vetorial tipo Octave. Essas coisas ajudam a desenvolver abstração e aprender novos conceitos…

    Bremm (usuário não registrado) em 9/01/2011 às 3:46 pm

    @ Tércio Martins

    Seria interessante ler/ouvir a explicação de escolherem Java para Mecatrônica, pelo simples fato de Java não gerar código executável.

    Fernando Mercês (usuário não registrado) em 9/01/2011 às 3:56 pm

    Muito interessantes as opiniões – e bem divididas! rs

    Eu reforço que o C é essencial para o que chamo de “programador de computadores” (algo à lá Peter Norton). Essa modernidade das faculdades não anda levando muito longe, em minha opinião. Mas não basta aprender C e esquecê-lo. Tem que ser usado, afinal, ninguém aprende C de verdade em um período. E se tratando de uma linguagem tão ampla, acho que dá pra ficar aprendendo por uns bons anos…

    tenchi, Haskell, Lisp são linguagens funcionais. Não dá pra comparar com linguageis estruturadas ou OO. PHP é livre sim. E Delphi na verdade é uma IDE, designer de interfaces e uma massaroca de bibliotecas, porque a linguagem é Object Pascal (a mesma usada no Pascal), então é possível fazer um aplicativo “Delphi” usado somente um editor de textos. ;)

    Abraços.

    rogerio (usuário não registrado) em 9/01/2011 às 4:35 pm

    Python proprietário?

    Amarok (usuário não registrado) em 9/01/2011 às 4:35 pm

    C é como matemática. É um tremendo exercício mental, que vai forçando a cabeça do aluno a aprender coisas mais complexas.

    Quem não consegue aprender C nunca saberá realmente programar um computador.

    Além disso, é a base de muitas linguagens mais modernas.

    Vidente Digital em 9/01/2011 às 4:38 pm

    @Tércio Martins

    Java para Engenharia Mecatrônica??? Não usam C? Quer dizer (estou extrapolando) que o povo da Engenharia Mecatrônica vive somente de interface para kits prontos de robótica? Ninguém mais programa em baixo nível? Ninguém mais cria do zero hardware e software num curso de Mecatrônica? o__O Logo em um curso de “Mecânica e Eletrônica aplicada a Robótica” o povo vive somente de Java e (provavelmente) somente de “kits prontos” de robótica? (não estou zoando, estou apenas questionando…)

    Do meu ponto de vista acho isso bastante errado…

    Tércio Martins (usuário não registrado) em 9/01/2011 às 4:49 pm

    A explicação que ouço na minha faculdade é que muitos dispositivos embarcados utilizam Java como linguagem para programação neles. Mas, como não tenho autoridade para responder pelo pessoal da Mecatrônica… :D

    No mais, sei de uma disciplina do meu departamento onde são ensinados conceitos de robótica com o auxílio do MobileSim (e na linguagem C).

    Anônimo (usuário não registrado) em 9/01/2011 às 4:54 pm

    “Alguns diriam que o correto seria começar com Pascal, mas há quem defenda linguagens mais modernas como Python, Perl, Ruby ou PHP. E aí, pra que serve o C no primeiro período?”

    Parabéns por lembrar do PERL, a fita adesiva da Internet.

    Concordo com o estudo de C.

    O que fazer com ….

    …o C que aprendeu na faculdade ?

    Sei lá, talvez ganhar muito dinheiro ??? Muito mais do que qualquer outro desenvolvedor existente….menos que um Assemblero é claro.

    O problema da maioria das linguagens é que elas procuram abstrair muita coisa e com isso acaba “emburrencendo” o programador que sempre fica em busca da versão mais nova do “Framework”, pois ouviu falar em uma palestra da M..Soft que sairá o santo graal que irá agilizar tudo, e “patati e patatá”…….

    Com C/C++, o desenvolvedor termina sendo praticamente obrigado a entender detalhes maiores do que só a linguagem, como estruturas internas do sistema operacional em que está desenvolvendo e outras coisas, vamos dizer….mais arquiteturais.

    Ou vc acha que em sofwares servidores de alta-performance ou embarcados que necessitam de processamento real-time vc vai esperar uma maquina virtual fazer o dump do garbage collector e perder preciosos segundos de processamento ????

    Sim….sistemas completos e complexos que requerem altissima performance são e sempre serão escritos em C/C++.

    []‘s
    PopolonY2k
    http://www.popolony2k.com.br

    Tércio Martins (usuário não registrado) em 9/01/2011 às 5:09 pm

    @Fernando Mercês:

    tenchi, Haskell, Lisp são linguagens funcionais. Não dá pra comparar com linguageis estruturadas ou OO. PHP é livre sim. E Delphi na verdade é uma IDE, designer de interfaces e uma massaroca de bibliotecas, porque a linguagem é Object Pascal (a mesma usada no Pascal), então é possível fazer um aplicativo “Delphi” usado somente um editor de textos. ;)

    Só complementando o que o Tenchi falou: quando ele diferenciou linguagens padronizadas e proprietárias, disse no sentido de existir uma documentação que oriente como a linguagem deve ser implementada, facilitando a criação de compiladores e/ou interpretadores concorrentes. C, Lisp, Haskell, ECMAScript e até o C# possuem. Python e PHP não.

    (no caso das linguagens “proprietárias”, a inclusão ou retirada de características nas “próximas versões da linguagem” é menos burocrática que nas primeiras, com o fato de outras implementações dessas linguagens – notadamente no caso do Python – serem incompatíveis).

    Revol (usuário não registrado) em 9/01/2011 às 5:20 pm

    O que fazer? Programe ora pomba, vá programar! A pior coisa do nosso problema com a falta de tecnologia no Brasil são os formandos, eles são simplesmente inuteis, não pelo o que é passado para eles, mas pela preguiça ou falta de vontade em aprender, pois você tem que buscar e buscar sem parar.

    Ozzy (usuário não registrado) em 9/01/2011 às 5:33 pm

    Mais preocupante é “o quê fazer com as faculdades que DIZEM ensinar C” e que soltam um monte de empurradores de mouse “diplomados” no mercado…

    O.O.

    Marcos (usuário não registrado) em 9/01/2011 às 5:43 pm

    @Tércio Martins,

    As implementações de Python não são incompatíveis. O que é dito no link que você colou é que muitas implementações “alternativas” do Python não seguem o padrão do CPython para módulos nativos, e portanto não rodam as bibliotecas em C criadas para o CPython.

    E isso não tem nada a ver com a linguagem em si, aí já estamos entrando no mérito de plataforma.

    Se fosse assim você poderia argumentar que C também tem o mesmo problema. Afinal, cada compilador tem seu formato de linkagem. Tem o formato ELF, tem o COFF, tem o OBJ da Borland e o da Microsoft que eu nem lembro o nome.. E mesmo dentro de ELF ainda tem incompatibilidades, por exemplo, não é sempre que você consegue linkar uma biblioteca compilada com o compilador da Intel com uma compilada com o compilador da Borland. Ou então poderíamos usar uma argumentação ainda mais esdrúxula e reclamar de incompatibilidades entre APIs específicas.

    Ou seja, vamos separar. Existem incompatibilidades entre plataformas Python, não entre implementações da linguagem Python. E essas incompatibilidades são por decisões técnicas dos próprios projetos, por exemplo, o Jython tem o objetivo de integrar com Java, e o IronPython tem o objetivo de integrar com a plataforma .NET, portanto cada um usa sua própria plataforma por livre e espontânea vontade.

    Quanto a dizer que Python e PHP não possuem documentação orientando como a linguagem deve ser implementada, também não procede. Tanto o Python como o PHP possuem essa documentação sim. Você pode alegar que essa documentação é escrita pelos próprios projetos e não por um comitê de padronização (como a ISO no caso do C, ECMA no caso de ECMAScript, etc.), mas não pode alegar que ela não existe, porque ela existe sim.

    Python: http://docs.python.org/reference/
    http://docs.python.org/reference/grammar.html

    PHP: http://www.php.net/manual/en/langref.php
    (OK, essa do PHP não é tão formal quanto a do Python, agora a do Python não se pode questionar que é uma especificação completa e formal.)

    Marcos (usuário não registrado) em 9/01/2011 às 5:44 pm

    s/com o compilador da Borland/com o gcc/

    AncientTroll (usuário não registrado) em 9/01/2011 às 5:52 pm

    @Ozzy,

    realmente, onde estudo o “professor” de algoritmo, sempre se confunde sobre o que é um vetor e uma matriz e vice-versa .. LOL.

    Elder Marco (usuário não registrado) em 9/01/2011 às 8:49 pm

    Nunca frequentei qualquer curso de Ciências da Computação, mas enquanto aluno do curso de Física, fui “alfabetizado” em linguagem C por uma professora que até hoje tenho uma consideração enorme. Era apenas um curso introdutório para físicos e eu não tinha grande conhecimento de programação até então, mas comecei a gostar de programar a partir daquela disciplina. Aprendi muitas coisas em C depois daquilo. Apesar de não ser um expert como gostaria, sempre aprendo algo.

    Realmente, é uma excelente linguagem, gosto muito e me é muito útil em outro curso que faço (de Geofísica). Ainda estou para aprender C++, mas o tempo não anda muito a meu favor.

    eu acredito que neste momento alguém deve estar precisando de um programador de cobol, falo sério. O mundo, que é maior que o mercado, é muito grande e sempre fico com medo de afirmações ou de ilusionistas que “sabem o que o mercado quer”.

    Acho que o principal do artigo é que a universidade brasileira enfoca muito o bacharel, o genérico, o acadêmico, daí porque normalmente ocorrem esses perrengues entre mercado x universidade e todo o blá blá de preparar para o mercado.

    outra coisa, como as graduações ficam no generalismo, cabe ao estudante escolher minimamente o seu caminho, sem se especializar demais também, e ter alguma proficiência no caminho que escolher. Universidade é algo que abre leques de coisas, mas não dá para crescere aprender a fundo todas elas.

    antes de mais nada, na nossa cultura bacharelesca, cursos técnicos são menosprezados, neles inclusive se poderia até desenvolver algo com mais tempo, que propriamente em 80hs em que se tenta passar uma vista no conteúdo de tantos livros.

    @vidente, há mais ou menos uns dez anos um colega da engª eletrica me disse que tudo deles tava indo pra java, porisso não me espanto, mesmo tendo perdido contato com ele parece que trabalha mais em funções gerenciais que em desenvovlimento

    Vidente Digital em 9/01/2011 às 9:39 pm

    @ericodc

    Isso é uma pena. Uma das coisas que sempre reclamei nesse país foi da queda contínua da “qualidade” do sistema de ensino superior desse país. E você pode ver isso de forma mais aberta em cursos como a Elétrica, Eletrônica e Mecatrônica. Na década de 2000 a univesidade federal em que estudava estava querendo alterar o currículo da Eletrônica de forma definitiva, causando grandes danos para a formação destes (e futuros) alunos: acabar com o desenvolvimento de hardware e focalizar o ensino apenas no software.

    E agora essa troca de C/C++ para Java em um curso de mecatrônica. Parece que a ordem nesse país é tornar a população cada vez mais distante do real mundo desenvolvido, do real conhecimento. E se você impedir que um aluno de eletrônica saiba desenvolver hardware, você estará matando ate mesmo a classe (no sentido de aquisição de conhecimento) de pessoas que ainda busca aprender e participar em primeira mão (e pessoa) do famoso “como as coisas são feitas”.

    Jack Ripoff (usuário não registrado) em 9/01/2011 às 9:56 pm

    Sim….sistemas completos e complexos que requerem altissima performance são e sempre serão escritos em C/C++.

    Sinto muito por furar a sua bola, mas as máquinas virtuais já fazem um trabalho melhor do que o compilador de C típico. As vantagens do código gerenciado são simplesmente grandes demais e a verdade é que só não mudamos ainda por inércia (i.e. coisas como retrocompatibilidade, falta de mão-de-obra especializada, grande acervo de software escrito em C, etc.). Hoje é possível programar sistemas de tempo-real até em Java.

    Não vale a pena se matar com otimizações em tempo de compilação em troca de migalhas sendo que em tempo de execução você tem muito mais informações sobre o que o programa está fazendo e pode otimizar melhor. Em troca você ganha mais tempo de desenvolvimento, e com mais desenvolvimento você pode otimizar mais os seus algoritmos – que são o essencial. Sem falar na segurança e na portabilidade…

    Acho que o principal do artigo é que a universidade brasileira enfoca muito o bacharel, o genérico, o acadêmico, daí porque normalmente ocorrem esses perrengues entre mercado x universidade e todo o blá blá de preparar para o mercado.

    Não acho justo culpar as universidades se os universitários não sabem escolher seus cursos.

    @Jack Ripoff.

    Sinto muito por furar a sua bola, mas as máquinas virtuais já fazem um trabalho melhor do que o compilador de C típico. As vantagens do código gerenciado são simplesmente grandes demais e a verdade é que só não mudamos ainda por inércia (i.e. coisas como retrocompatibilidade, falta de mão-de-obra especializada, grande acervo de software escrito em C, etc.). Hoje é possível programar sistemas de tempo-real até em Java.

    Sinto muito furar sua bola também pois com esse comentário vejo que vc realmente não tem experiencia em sistemas de tempo real e talvez nem tenha noção da necessidade de performance real desses sistemas críticos.

    Máquinas virtuais não estão otimizadas para processamento Real time atualmente nem utilizando máquinas reais super poderosas multi-core amigo, vc já tentou fazer algum servidor de altíssima disponibilidade que processa algo em torno de 20Mb/s, por Pipeline (10 pipes por exemplo (10 * 20Mb/s = 200Mb/s)), em .Net ou Java por exemplo ? Já mediu a performance de um sistema desse porte em .Net ou Java versus C/C++ ??? Já mediu o tempo em que a máquina virtual pára para fazer um dump do garbage collector de um sistema que processa 200Mb/s ?? Desde quando alocação de memória deixou de ser um recurso “caro” para o SO a ponto da VM ficar alocando e desalocando “automagicamente” sem perda de performance ???

    Mesmo que vc garanta que o garbage collector vá funcionar nos pontos que vc quiser do seu sistema, vc é capaz de garantir o mesmo quando estiver usando alguma peça do Framework padrão de sua linguagem favorita ???

    Vai por mim….tenho bastante experiencia em softwares servidores de alta performance e disponibilidade e inclusive em projetos para veículos não tripulados (aviões entram nessa categoria)……e te digo….máquina virtual é “proibido” nesse meio e esses sistemas sempre são feitos em C nem em C++ pelos micro ou nanosegundos de overhead que uma linguagem orientada a objetos tem.

    Entrando em uma outra esfera. Vc sabe porque preferem Linux e BSD’s em projetos de tempo real ?? Não seria porque esses SO’s trabalham com resoluções de tempo de MicroSegundos (BSD) e NanoSegundo (Linux) e no Windows não se consegue nada abaixo dos Milisegundos ????

    Ou seja, se os caras precisam dos microsegundos e nanosegundos, vc acha mesmo que o overhead do realtime compiler de um maquina virtual aliado ao tempo de processamento dos bytecodes não é importante nesses sistemas ???????????

    Não confunda, sistemas web de alta performance com sistemas de missão crítica de tempo real. No caso de sistemas web de alta performance acho sim que essas linguagens baseadas em bytecodes com VM estão preparadas para aguentar o tranco, mas isso é mas pelo conjunto hardware e software do que apenas pelo software, pois se a máquina virtual já está no nível de C como vc falou, então vamos fazer um sistema de missão crítica em .Net ou em Java e usar num Pentium 166 Mhz para processamento real time com altissima performance ?!?!?!

    Ah sim…existem sistemas com necessidades de processamento em Realtime de altissima performance, rodando em plataformas menores do que a do pentium 166Mhz que citei acima…..só que, com certeza não estão rodando em máquinas virtuais.

    Então meu caro, lembre-se que 1 segundo em um avião a 300Km/s, significa um erro de 300Km, já pensou nisso ?

    Vc confiaria viajar em um avião com software embarcado rodando em máquina virtual Java ou .Net ????

    A propósito, o que vc quer dizer com Compilador C típico ????

    []‘s
    PopolonY2k
    http://www.popolony2k.com.br

    Diego (usuário não registrado) em 9/01/2011 às 11:08 pm

    O C que as faculdades ensinam parece ser apenas básico, ou seja, a faculdade não ensina propriaente o C, mas a lógica de como é uma linguagem de programação, sintaxe e semântica, etc., e a ênfase maior é pra outras linguagens mais modernas, como Java ou .NET. Mas não ensina 100%, a pessoa tem que aprender por fora se quiser, tanto C como qualquer outra linguagem que achar melhor pro mercado de trabalho.
    Por exemplo, vou ter que aprender agora .net de verdade, mesmo ja feito a facul, pra poder trabalhar.

    Opa…..

    …corrigindo, onde está Km (Kilometro) corrija para m(metros).

    []‘s
    PopolonY2k
    http://www.popolony2k.com.br

    Ainda bem que o titulo do artigo não é uma pergunta. ufa!

    Celso Annes (usuário não registrado) em 9/01/2011 às 11:54 pm

    Na minha opinião o Pascal é a melhor linguagem para aprendizado. Felizmente quando entrei na faculdade já tinha conhecimento de linguagem de programação.
    Mas para minha surpresa na faculdade meu professor começou com Delphi, todos da turma levaram um grande tempo para engrenar no curso, e acredito que o maior vilão foi este.
    Na minha opinião linguagens mais modernas só depois que o pessoal esta com a idéia de estrutura de programação bem assentada na cabeça, o C pode aguardar para o segundo semestre.

    kashmir (usuário não registrado) em 10/01/2011 às 3:21 am

    Da experiência que tive em sala de aula deveria se aprender o funcionamaneto de um processador/computador e um pouco de assembly antes de tentar ensinar “programação”, independente de linguagem.
    Tem gente que abstrai com facilidade, outras pessoas ficam se perguntando como o computador “sabe” que é pra sair daquilo que está escrito na parte debaixo do quadro e voltar 5 vezes pra parte superior do quadro.

    @popolony2k, não sei quanto ao .NET, as o Java já tem APIs real time há anos, e inclusive JVMs otimizadas pra isso, como a versão comercial do JRockit.

    E tem muita empresa usando sim, Java pra realtime, pesquisa no google que você encontra.

    Quanto ao tempa do tópico, concordo com a adoção do C, Java ou Pascal. Aliás, o mais importante não é a linguagem, mas os fundamentos e a base teórica ensinada. O aluno não tem de se preocupar com a linguagem, mas com a programação.

    Onde estudei, nos primeiros períodos estudava Pascal e Haskell, se mudasse a linguagem não faria a menor diferença.

    Jack Ripoff (usuário não registrado) em 10/01/2011 às 10:30 am

    Mesmo que vc garanta que o garbage collector vá funcionar nos pontos que vc quiser do seu sistema, vc é capaz de garantir o mesmo quando estiver usando alguma peça do Framework padrão de sua linguagem favorita ???

    Framework padrão? Nem em C você usa o “framework padrão” (se é que isto quer dizer o que eu estou pensando) para programar em tempo-real.

    E hoje existe uma coisa chamada coletor de lixo determinístico.

    máquina virtual é “proibido” nesse meio

    Coitada da Lockheed Martin então, que usa Java em software militar e de aviação desde… bom, desde muito tempo!

    esses sistemas sempre são feitos em C nem em C++ pelos micro ou nanosegundos de overhead que uma linguagem orientada a objetos tem

    Você está confundindo conceitos. C++ é orientado a objetos.

    Vc sabe porque preferem Linux e BSD’s em projetos de tempo real ?? Não seria porque esses SO’s trabalham com resoluções de tempo de MicroSegundos (BSD) e NanoSegundo (Linux) e no Windows não se consegue nada abaixo dos Milisegundos ????

    Enquanto é verdade que o Linux e o BSD são muito preferíveis ao Windows em projetos de latência crítica, há de se reconhecer duas coisas: primeiro que o real motivo está mais ligado às diferenças entre os agendadores desses sistemas e segundo que quem quer resolução de nanosegundos não usa nem Windows, nem BSD e nem Linux, usa um RTOS.

    vc acha mesmo que o overhead do realtime compiler de um maquina virtual aliado ao tempo de processamento dos bytecodes não é importante nesses sistemas

    Por que é então que todos os processadores x86 modernos são uma máquina virtual x86 em volta de uma arquitetura RISC? Estudos realizados pela HP mostram que mesmo quando você não precisaria ter uma máquina virtual interpretando o seu código (i.e. o código binário já é código nativo), ainda assim é vantajoso ter uma pois os ganhos de desempenho podem chegar a 30% (exato, eles adicionaram uma camada de software e ganharam desempenho).

    Vc confiaria viajar em um avião com software embarcado rodando em máquina virtual Java ou .Net ????

    Com certeza confio muito mais em um avião ou em um equipamento militar que não pode ser sequestrado ou invadido remotamente por causa de um maldito buffer overflow.

    nozes (usuário não registrado) em 10/01/2011 às 11:51 am

    tenso!

Este post é antigo (2011-01-09) e foi arquivado. O envio de novos comentários a este post já expirou.