A matéria mais difícil

24 de June de 2008 - Fernando Roberto

Como alguns de vocês já estão cansados de saber, estou cursando o quinto ano de Engenharia da Computação. No começo do curso, naturalmente pastei para poder aprender Cálculo, Álgebra, Física e aquelas outras matérias que tiram fumacinha da calculadora.

Como não pude sair do meu colegial técnico e ir direto para uma universidade, trabalhei um pouco na área até eu conseguir pagar a mensalidade de uma faculdade. Estagiário ganha pouco mesmo. Esse tempo, além de me trazer uma graninha extra por mês, também me trouxe um cadim de experiência. Não foi muita, mas o suficiente para identificar possíveis deslises de professores durante as aulas de programação. O curso de Engenharia da Computação tem duração de seis anos, e durante esse tempo eu ainda tinha que trabalhar, mesmo porque eu tinha que pagar a faculdade. Durante esse tempo acabei lendo um livro ou dois, ou três, quatro, cinco, enfim, alguns.

É natural os professores tenderem a não explicar exatamente como as coisas são ou funcionam, e assim, ganhar um pouco de tempo para poder abordar mais assuntos com menos detalhes. Afinal, você não aprende tudo o que precisa na universidade, mas você já consegue ter uma boa noção de onde você está se enfiando quando for trabalhar na área e por onde começar a buscar mais detalhes sobre determinado assunto. Eu mesmo, nos cursos de drivers que já dei, tento explicar o essencial, o que o aluno vai mesmo utilizar, mas sempre tento deixar claro que existem detalhes a serem vistos.

Durante o curso, eu mal podia esperar para ver as matérias técnicas, que me abririam os olhos para uma nova maneira de ver os dispositivos eletrônicos, circuitos integrados e os computadores. Depois de engolir algumas atravessadas de professores de Linguagem C e de Engenharia se Software, finalmente comecei a estudar algo realmente interessante. A matéria de Sistemas Operacionais é mesmo surpreendente. Nela estudamos diferentes sistemas operacionais que rodam sobre diferentes arquiteturas de computadores. Ufa! Pelo menos uma arquitetura e um sistema operacional eu conheço razoavelmente bem.

Tudo bem o professor dizer que Thread e Processo é a mesma coisa, explicar Inter Process Communication sem nem tocar no assunto Memória Virtual e Marshaling, mas foi show tentar engolir a explicação sobre Sincronismo e Gerenciamento de Interrupções dos sistemas operacionais. Tudo bem, eu só posso dizer que o professor escorregou em Windows, eu não conheço todos os outros Sistemas Operacionais. Acho que ele só escolheu o sistema operacional errado na hora de dar um exemplo infeliz. Não me lembro das palavras exatas, mas meu professor nos ensinou que o Windows XP ainda não é um sistema operacional preemptivo, e que as chamadas ao sistema operacional não podiam acontecer concorrentemente. Primeiro uma, depois a outra e assim por diante. Particularmente acho que ele deve ter confundido XP com 9X. Afinal os dois possuem a letra X. Nessa hora eu tive que parar de ler o livro que eu estava lendo e pedir para ele repetir aquilo. Eu poderia ter ouvido errado, mas infelizmente não foi isso que aconteceu. Ele disse aquilo mesmo. Mais tarde na mesma aula ele nos disse que o Windows XP ainda não consegue gerenciar interrupções adequadamente, que se uma interrupção ocorre enquanto um processo está rodando, o sistema normalmente espera o processo inteiro terminar para que só depois ele possa atender à uma interrupção.

Como em toda sala de aula universitária, sempre existe um grupinho de alunos que odeiam o Windows e defendem uma outra opção de Sistema Operacional. Nada contra eles, nem contra a opção deles, mas de vêz em quando me aparece cada figura que é um caso sério. Enfim, estes logo disseram ironicamente aos risos: “É lógico! Porque é o mais inteligente a se fazer”. Assim todos na sala começaram a rir desse péssimo exemplo de gerenciamento de interrupções do Windows. Eu nunca falo nada, sou aquele cara que chega uns 30 minutos mais cedo na sala pra poder ler meu livro em paz. Não saio fazendo campanha a favor do Windows nem contra outros sistemas. Não fico explicando como completar uma IRP para cada pessoa que encontro no café, mas essa eu não podia deixar passar em branco. Perguntei ao professor: “Nossa, que interessante isso! Onde foi mesmo que o senhor leu isso?”. “Em qualquer livro de Sistemas Operacionais” ele me respondeu. Vejam só que inocência da minha parte, eu imaginava que os livros clássicos de Sistemas Operacionais tinham sido escritos quando o Windows XP ainda nem existia. Então eu disse: “Não é por nada, é que não é isso que tenho visto nos livros que tenho lido. Talvêz eu esteja lendo os livros errados.”

Windows Driver Model (1999)

“The operating system can preempt any subroutine at any moment for an arbitrarily long period of time, so we cannot be sure of completing critical tasks without interfere or delay. Even if we take steps to prevent preemption, code executing simultaneously on other CPU in same computer can interfere with our code.”


Windows NT Device Driver Development (1999)

“As was mentioned in Chapter 1, Windows NT is a pre-emptive, multithreaded, and multitasking, operating system. It employs a traditional operating system technique to provide this multitasking capability by associating a quantum with each thread when it starts running.”


Desvendando o Windows NT (1998)

“Como o Windows NT implementa um escalador preemptivo, se outro thread, com uma prioridade mais alta se aprontar para execução, o thread sendo executado atualmente é solicitado antes de terminar sua fatia de tempo.”


Windows Internals (2005):

“Windows implements a priority-driven, preemptive scheduling system the highest priority runnable (ready) thread always runs, with the caveat that thread chosen to run might be limited by the processors on wich the thread is allowed to run, a phenomenom called Processor Afinitty.”


Developing Drivers with Windows Driver Foundation (2007):

“Windows is a preemptive multitasking operating system in wich multiple thread can try to aceess shared data or resources concurrently and multiple drivers functions can run concurrently.”


Enfim, é óbvio que não vou discutir com meu professor e tornar minha vida acadêmica um inferno. Mais uma vez vou respirar fundo e fazer dizer aquele sonoro “Ahhhh tá…”.

É nestes momentos que eu fico preocupado sobre um outro aspecto. Felizmente posso ouvir e filtrar o que professores de programação em Linguagem C e Sistemas Operacionais dizem, mas nada posso fazer quanto aos professores de Eletrônica, Inteligência Artificial, Microcontroladores e outras tantas matérias que estamos aprendendo. Será que estamos ouvindo as mesmas barbaridades e não sabemos?

De qualquer forma, a matéria que pensei que seria a mais fácil, agora é uma das que me atormentam.
Leia sempre…

7 Responses to “A matéria mais difícil”

  1. hahaha, falou e disse!
    é sempre bom buscar uma fonte alternativa. assim como você, também busco outras fontes, mas fica difícil escapar ileso desse tipo de problema durante toda a faculdade!
    Dei sorte de pegar um professor ótimo em Sistemas Operacionais (tema que tanto me interessa), mas em outras matérias nem tanto.
    Enfim, muito boa sua dica!
    🙂

  2. “Como em toda sala de aula universitária, sempre existe um grupinho de alunos que odeiam o Windows e defendem uma outra opção de Sistema Operacional.”

    Bom, pelas poucas pessoas formadas que conheci trabalhando na área técnica, eu posso afirmar que poucas mereceram meu crédito, tanto pelas barbaridades ditas em um assunto que presumidamente elas deveriam conhecer um pouco a respeito, quanto pelos assuntos que eu sabia saber mais e fui abordado por opiniões preconceituosas e ignorantes. Por essa observação, posso dizer que deve ser bem comum pessoas na universidade não terem opinião própria, nem conhecimento adequado. Talvez nem depois de formadas.

    Obviamente que existem pessoas que corroboram a teoria que todos os formados são incompetentes, tanto pelo alto teor técnico quanto pela vontade de aprender sempre mais.

    A conclusão óbvia é que ter um diploma na área da computação não é certificado de conhecimento nem de domínio na área.

  3. Anonymous says:

    Muito bom meu caro!

    E p/ citar um exemplo na linha do seu comentario sobre o que dizem os professores das outras materias, que vc nao domina tao bem:

    Um tempao atras, quando aquele livro do Dan Brown (que depois virou filme) era *A* febre, eu li e gostei. Logo na sequencia li outro livro dele, com um tema mais “digital”, e por tocar em assuntos que eu entendia eu tive dor de estomago de tao ruim que era (eh) o conhecimento do autor.

    E dai’ esbarrei no mesmo dilema: sera’ que ele entende tanto (tao pouco) de historia da arte e religiao quanto entende (ha!) de informatica e ciencia da computacao? Se for o caso, “I want my money (time!) back, please”

    Nada como poder avaliar … E ficar antenado quando nao pudar 🙂

    Abracos
    anonymous@127.0.0.1

  4. Danizinha says:

    “Nessa hora eu tive que parar de ler o livro que eu estava lendo e pedir para ele repetir aquilo.”

    Tenho um cunhado muito bizarro, meu Deus do céu!

    Me formo semana que vem nesse curso, e sei bem o que você está dizendo, rssss* professores despreparados… já tive aula com alguns do tipo.

    Meu prof de SO era todo sabidinho, estava fazendo doutorado e nunca tinha trabalhado na vida, imagina só se algum aluno se atrevesse a questioná-lo??? rs* Mas te asseguro que ele não deu mancadas!

    Amo sistemas integrados então o que mais gostei foram as aulas maravilhosas de engenharia de software.

    É, só trabalhando na area mesmo prá pegar esses detalhezinhos, né?

    Boa sorte companheiro, você ainda tem um longo TCC pela frente, e dali criatividade!

    []´s

  5. Kabloc says:

    Isso me faz lembrar daquela história onde um professor entrou na sala de aula escreveu um código em C na lousa vira para os alunos e pergunta:

    _Alguém sabe oque este código faz?

    É quando um amigo meu levantou o braço e disse – Eu sei!

    _Não compila !!!

    Histórias a parte também estou tendo o mesmo problema com um professor de SO, só para ter uma idéia ele explicou que memória compartilhada é quando dois processos estão rodando ao mesmo tempo e um deles precisa de mais memória, ele pega a memória do processo vizinho e bla bla bla (não sei a continuidade do assunto porque caiu no meu filtro de SPAM)…

    Eu simplesmente anotei para responder a prova que ele corrigiria, o que mais eu poderia fazer?

  6. scarvenger says:

    Cara, com certeza isso é muito triste, é preciso ter cuidado nessas horas e realmente não falar nada é uma opção, mas temos que ver que no meio acadêmico (como dito por um amigo meu) a pessoa que for ensinada será o ensinador, isso possivelmente pode criar um ciclo vicioso, então dentro do meio acadêmico acredito que tu deverias ter corrigido o teu professor em nome da integridade intelectual de todos.

  7. techberto says:

    Well,

    Meio atrasado, mas não resisti em comentar…

    Realmente, não ter tempo suficiente para dar o foco adequado a todos os temas nunca foram desculpas para a verborréia acadêmica de alguns colegas que surfam na maionese profanando os clássicos acadêmicos. Se teu professor tivesse lido o basico-do-básico ele não teria cometido este assassinato de credibilidade.

    Já lecionei esta disciplina, felizmente eu nunca propaguei estas profanações, talvez outras, mas não lembro-me, até porquê nunca fui contestado; o que não é grande referência! 🙂

    E para não falar que eu nunca soltei nenhum folclore, nunca resisti em comentar a curiosidade das iniciais de Windows NT (“WNT”) terem 1 salto de transposição dos caracteres de “VMS”. Mas esta é outra história….

    Olhando para trás, percebo que entorpeci meus alunos com frases do Brooks de seu ilário e lendário The mythical man month, acho que eu devia ter citado mais Corbató ou Crowley. Ficam aí lições para um futuro…

Deixe um comentário