Zrozumienie działania kompilatorów kluczem do zrozumienia jak działają komputery?

0

Niedawno znalazłem artykuł opisujący jak zbudować prosty interpreter. https://ruslanspivak.com/lsbasi-part1/
Zainteresowały mnie następujące fragmenty:

if you don’t know how compilers and interpreters work, then you don’t know how computers work. It’s that simple.

Why would you study interpreters and compilers? I will give you three reasons.

1. To write an interpreter or a compiler you have to have a lot of technical skills that you need to use together. Writing an interpreter or a compiler will help you improve those skills and become a better software developer. As well, the skills you will learn are useful in writing any software, not just interpreters or compilers.
2. You really want to know how computers work. Often interpreters and compilers look like magic. And you shouldn’t be comfortable with that magic. You want to demystify the process of building an interpreter and a compiler, understand how they work, and get in control of things.

Czy zgadzacie się z tym, że jak pozna się zasadę działania kompilatorów, to będzie się ogólnie lepszym programistą oraz lepiej będzie się rozumiało jak działają komputery?

BTW. Sorry za brak odpowiedniego tagu, bo nie ma tagu "kompilatory" a do utworzenia swojego tagu mam za mało punktów reputacji.

0

Jeżeli jako programista chcesz używać kompilatorów/interpreterów to tak.

0

Zrozumienie jak działa kompilator/interpreter na pewno pozwoli ci zrozumieć kilka rzeczy, ale nie jest to konieczne...

Tworzenie kompilatora: http://www.stack.nl/~marcov/compiler.pdf

1

Zrozumieć jak działają komputery, czy raczej procesory?

A nawet załóżmy, że chodzi o to drugie - odpowiedź brzmi: to zależy. Ale jest szybsze rozwiązanie, zamiast na około: zamiast próbować zrozumieć kompilator, zrozum działanie asemblera, a w zasadzie kodu maszynowego. Tak właśnie działa procesor. ;)

2

Na studiach informatycznych jednym z zadań zaliczeniowych jest napisanie kompilatora. Wymaga to dużo pracy, ale ma głęboki sens, bo przybliża wiele kwestii, których prosty "klepacz kodu" nigdy nie będzie jest świadomy. Z drugiej strony, można sobie spokojnie pisać kodziołek nie interesując się niuansami. Wszystko zależy od aspiracji.

0

Hehe, fajnie wiedzieć jak działa kompilator, ale jeszcze lepiej wiedzieć jak jest zbudowany procesor i zbudować własny, chodź to wcale nie jest takie trudne :D

Algebra boola wystarczy do wykonania wszystkiego w technice cyfrowej.
Podstawowe operacje and, or, xor, not lub jak ktoś woli to nor lub nand gdyż są uniwersalne i wystarczy tylko podwójnie zanegować równanie żeby otrzymać odwrócony zapis :D

W dodatku wszystko będzie się wykonywać równolegle, co jest pewną zaletą tego niższego poziomu abstrakcji.
No i trzeba uwzględniać propagację sygnału, gdyż stany na bramkach logicznych mogą się różnić na różnych poziomach w zależności od czasu.

Dodatkowo transformacja fouriera.

No i elektronika, a wtedy wszystko zaczyna się łączyć w przepiękną całość.
Dodatkowo toruje się ścieżka do mechaniki i chemii.

A wszystko zaczęło się od programowania, ale niektórzy mogli rozpocząć w innym miejscu.
Ale wszystkie ścieżki się w końcu przetną.

0

To zależy. Samo pisanie kompilatora/interpretera (w tym kontekście to w sumie jeden czort, chodzi o sam proces tłumaczenia kodu, na „coś” co można wykonać w CPU albo w interpreterze) nie pozwoli ci zrozumieć, jak działa komputer jako taki. To jest trochę głębiej i w dodatku współczesne komputery mają bardzo dużo rzeczy, które nie wychodzą poza krzem lub ich wyjście jest bardzo specyficzne i zazwyczaj go nie dotykamy.

To, co daje napisanie własnego interpretera, kompilatora, albo emulatora procesora (patrz roz. 1 roz.3 „Zrozumieć programowanie” @Gynvael Coldwind) to możliwość przejścia przez tok rozumowania kilku pokoleń programistów i samodzielnego rozwiązania niektórych problemów, z którymi oni musieli sobie poradzić. Dzięki temu lepiej zrozumiesz, nie jak działa komputer, ale dlaczego niektóre mechanizmy działają w taki, a nie inny sposób.

Sam artykuł jest zresztą świetnym przykładem na to, że w procesie uczenia programowania wykonujemy wiele ćwiczeń, które w żaden sposób nie kojarzą się z pisaniem interpreterów, a są kluczowe by rozwijać swoje umiejętności. Przecież „Kalkulator tekstowy” jest jednym z pierwszych ćwiczeń na zajęciach z programowania :)

0

Napisanie kompilatora pozwala zrozumieć jak działają kompilatory. Simple as that :)
No i lizniesz troche architektury którą będziesz targetować (na studiach i tak zazwyczaj dają jakąś wymyśloną architekturę z prostym assemblerem).

1 użytkowników online, w tym zalogowanych: 0, gości: 1