-
Notifications
You must be signed in to change notification settings - Fork 0
/
cap-subjetiva-wil.tex
117 lines (101 loc) · 6.36 KB
/
cap-subjetiva-wil.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
%% ------------------------------------------------------------------------- %%
\chapter{Wilson Kazuo Mizutani}
\label{cap:wil}
\section{Desafios e Frustrações}
\label{cap:wil:desafios_frustracoes}
Pessoalmente, meu primeiro desafio foi escolher um trabalho de formatura. Eu
tinha pelo menos umas três ideias diferentes, e sinto que se tivesse me decidido
antes, eu poderia ter começado mais cedo e o trabalho estaria bem mais
adiantado. No final, escolhi o que eu escolhi principalmente porque eu poderia
fazer em dupla com meu amigo, e portanto eu teria duas vezes mais motivos para
me esforçar e fazer tudo direito.
Depois disso, passamos por maus bocados tentando substituir o SWIG. Reconhecer a
gramática da linguagem \CXX{} não é fácil, e causou bastantes dores de cabeça.
No final das contas, se tivéssemos usado a metodologia de \textit{milestones}
desde o começo, não precisaríamos ter feito tanto esforço com essa parte do
projeto, pelo menos não tão cedo e não tão intensamente como ocorreu.
Outra dificuldade foi o código que eu mesmo escrevi. A verdade é que aprendemos
muito durante a graduação, e nossas habilidades como programadores melhoram
incrivelmente rápido. A parte da OPA que eu havia escrito há dois anos no
USPGameDev hoje me atormenta. Por que eu tinha que fazer as coisas de um jeito
tão complicado e confuso!? Até hoje sinto uma preguiça instantânea de ter que
mexer naquela seção do nosso código...
Eu diria que minha maior frustração é que temos uma data final para entregar
esse projeto. Não porque seja difícil atingir nossas metas, mas sim porque
temos que ter metas. Sem elas, perdemos a objetividade e o trabalho não rende.
Eu preferiria ter desenvolvido com mais liberdade, experimentando e explorando
as possibilidades. Esse projeto é particularmente significativo para mim, porque
ele abre muitas portas para metaprogramação em \CXX{}. Tanto que definitivamente
continuarei trabalhando nele depois que entregá-lo. Só fico desanimado por ter
tido que podar muitas das minhas ideias em prol da entrega final. Por outro lado,
eu aprendi muito sobre como ser objetivo em um projeto com uma escala bem maior
que a de um exercício-programa, e isso com certeza é um aprendizado que usarei
para o resto da minha vida.
\section{Relação entre o trabalho de formatura e disciplinas do BCC}
\label{cap:wil:relacao_disciplinas_bcc}
Seguem algumas opiniões minhas sobre como algumas disciplinas que cursei ao
longo da minha graduação ajudaram nesse trabalho. Muitas vezes, o que fez mais
diferença foi o professor que ministrou a disciplina, seja pelo que ele passou
a mais ou pelo que ele passou a menos com relação às ementas originais.
\vspace{1em}
\materia{MAC0122}{Princípios de Desenvolvimento de Algoritmos}{
É a primeira matéria onde tive contado com \C{}, e na qual aprendi o
essencial para desenvolver meus próprios algoritmos. Os exercícios-programa
ajudaram muito a incentivar minha curiosidade como programador, assim como
minha vontade por tentar entender mais a fundo algoritmos de diversos tipos
e as maneiras de torná-los mais eficientes.
}
\materia{MAC0211}{Laboratório de Programação I}{
Essencialmente pela experiência de fazer um projeto de médio porte, e pelas
diversas ferramentas ensinadas ao longo da ementa: Makefile, LaTeX, flex e
bison, principalemente.
}
\materia{MAC0323}{Estrutura de Dados}{
Além de aprender a ideia por trás das estruturas de dados clássicas, um
aspecto interessante da matéria foi que o professor ressaltou a importância
de se fazer boas APIs. Ao longo de todo nosso trabalho, uma das minhas
principais preocupações sempre foi garantir que o usuário do nosso sistema
tivesse facilidade de entender e usar os serviçoes que forneceríamos.
}
\materia{MAC0316}{Conceitos Fundamentais de Linguagens de Programação}{
Nessa disciplina desenvolvemos um interpretador para uma linguagem de
programação bem simples, montando a máquina virtual dela, apesar de não chegarmos
a chamar ela disso naquela época. Isso ajudou muito a entender o que tem
por trás de uma linguagem interpretada, o que facilitou o uso das APIs de
\lang{Lua} e \lang{Python} em nosso trabalho.
}
\materia{MAC0335}{Leitura Dramática}{
Ensinou boas técnicas para se dirigir a um público, que eu deveria ter usado
melhor na nossa apresentação...
}
\materia{MAC0342}{Laboratório de Programação Extrema}{
As práticas de programação extrema foram muito úteis em nosso trabalho, e
acredito que teríamos rendido muito mais se tivéssemos usados elas direito
desde o começo (infelizmente eu cursei essa disciplina durante o primeiro
semestre desse trabalho, então só comecei a aplicar o que aprendi no meio
do caminho). O mais importante que aprendi foi saber priorizar aquilo que
agrega mais valor na hora de desenvolver um \textit{software}, evitando a
perda de tempo com código que dá trabalho e não acrescenta nada.
}
\materia{MAC0414}{Linguagens Formais e Autômatos}{
Entender o que são gramáticas, suas limitações e como implementar programas
que as reconhecem foi primordial na hora de fazermos nosso gerador que
precisava analisar código em \CXX{}. Por mais que tenhamos usado o Flexc++
e o Bisonc++ para gerar os analisadores léxico e sintático, não teríamos sido
capazes de entender as mensagens de erro que eles produziam, e portanto não
consiguiríamos corrigir a nossa parte dos analisadores sem o conhecimento
que essa disciplina nos trouxe --- pelo menos não sem ter que pesquisar um
monte e quebrar a cabeça pra caramba.
}
\materia{MAC0424}{O Computador na Sociedade e Empresa}{
Tirando as partes mais... \emph{peculiares} dessa matéria, teve duas coisas
relevantes para o trabalho que aprendi com ela. A primeira é a definição
informal de uma máquina de Turing (infelizmente minha turma não teve tempo
de ver isso em MAC0414 e eu não fiz nenhuma disciplina de Complexidade
Computacional), que me ajudou a entender melhor o que é uma ``máquina que
executa programas''. A outra foi uma discussão que tivemos sobre as diferenças
entre \emph{dado}, \emph{informação}, \emph{conhecimento} e \emph{competência},
que me ajudou a compreender mais claramente as verdadeiras (in)capacidades do
computador. Isso me permitiu ter uma visão mais objetiva da computação em
geral, o que me ajudou a escrever várias partes dessa monografia.
}