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

Odpowiedz Nowy wątek
2016-08-27 19:52

Rejestracja: 4 lata temu

Ostatnio: 22 godziny temu

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.

edytowany 1x, ostatnio: arkadiusz97, 2016-08-27 19:53
Zrobiłem ci dobrze tagiem :) - Koziołek 2016-10-05 13:08

Pozostało 580 znaków

WEEEE
2016-08-27 19:58
WEEEE
0

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

Pozostało 580 znaków

2016-08-27 23:37

Rejestracja: 3 lata temu

Ostatnio: 2 lata temu

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

Pozostało 580 znaków

2016-09-02 19:09

Rejestracja: 13 lat temu

Ostatnio: 1 tydzień temu

Lokalizacja: Trójmiasto

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. ;)

Ok, słyszałem o tym ale dzięki za informacje. Tutaj chciałem po prostu się zapytać o to czy zrozumienie kompilatorów pomoże. - arkadiusz97 2016-09-02 19:11
Moim zdaniem, nie pomoże. Kompilator to program. - forsberg 2016-09-02 19:11

Pozostało 580 znaków

2016-09-21 15:05

Rejestracja: 4 lata temu

Ostatnio: 1 rok temu

Lokalizacja: Warszawa, Polska

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.

edytowany 1x, ostatnio: tomaszl, 2016-09-21 15:07
Chcę być kimś więcej niż tylko prostym klepaczem kodu. - arkadiusz97 2016-09-21 15:50
Pisz interpreter :) - tomaszl 2016-09-21 15:53
Ale co najmniej Haskella albo OCamla! - Shalom 2016-09-21 16:16
@amb00 No to pójdź na studia, albo poczytaj książki lub Internet ;). Na każdej technicznej uczelni jest przynajmniej jeden przedmiot związany z kompilatorami, gramatykami, etc. To bardzo szeroki temat. Na codzień może się to mało przydaje, choć z drugiej strony, gdybyś musiał napisać program analizujący i interpretujący jakąś prostą składnię lub weryfikujący jej poprawność, to przynajmniej wiedziałbyś od czego zacząć. - wiciu 2016-09-22 18:18

Pozostało 580 znaków

2016-09-21 15:50

Rejestracja: 4 lata temu

Ostatnio: 3 lata temu

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ą.

Elektroniką też się zajmowałem i niedługo znowu zacznę się jej uczyć. A to jak działają operacje logiczne, to dobrze wiem. - arkadiusz97 2016-09-21 15:52
Słowa geniusza :) - Bartosz Wójcik 2016-09-21 15:52

Pozostało 580 znaków

2016-10-05 13:20
Moderator

Rejestracja: 13 lat temu

Ostatnio: 1 tydzień temu

Lokalizacja: Stacktrace

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 :)


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
edytowany 1x, ostatnio: Koziołek, 2016-10-06 10:18
cough roz. 3 cough ;) - Gynvael Coldwind 2016-10-05 22:06

Pozostało 580 znaków

2016-10-05 14:17

Rejestracja: 9 lat temu

Ostatnio: 3 lata temu

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).

Pozostało 580 znaków

Odpowiedz

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