Jak komputer 'czyta' dany język programowania?


(Rishikbp) #1

Chciałbym się dowiedzieć jak komputer interpretuje dany język. Dokładniej: jak od zera komputer 'czyta' dany język. I jeszcze dokładniej: w jaki sposób komputer rozumie dane wyrażenia języka, że np funkcja "echo $time" w języku php po zinterpretowaniu pokazuje nam czas? Na czym się te wszystkie języki opierają i skąd komputer je 'zna'. Prosiłbym o jasne wytłumaczenie jak to po kolei się dzieje, gdyż w internecie nie znalazłem odpowiedzi, a to może dlatego, że nie potrafię tego nazwać.

Za wytłumaczenia serdecznie dziękuję, a jeżeli moje pytanie jest nie zrozumiałe postaram się je jeszcze bardziej sprecyzować.


(kamil_w) #2

Procesor obsługuje sygnały "1" i "0" (odpowiedniki "włączone" i "wyłączone", lub też inaczej mówiąc "jest sygnał" i "nie ma sygnału"). To tak słowem wstępu.

Rozróżniamy języki programowania niższego i wyższego rzędu. Językiem niższego rzędu jest asembler - prosty język zrozumiały dla procesora. Języki wyższego rzędu: Java, PHP, C, C++, C#, ... Każdy kod języka wyższego rzędu jest tłumaczony na język niższego rzędu, który jest zrozumiały dla procesora. Tak na prawdę 1 linijka kodu w języku wyższego rzędu może być uproszczoną wersją tysięcy linijek asemblera. Języki wyższego rzędu są tworzone po to, by nie trzeba było się męczyć tygodniami by np zrobić proste okienko.

To tylko zarys tej powieści, która może okazac się dłuższa niż trylogia Tolkiena :wink:


(Tomek Matz) #3

Naprowadzę Cię ... Poczytaj o kompilatorach i interpreterach, a następnie (skoro interesuje Cię php) poczytaj o skryptach po stronie klienta i po stronie serwera.


(Rishikbp) #4

Tak, te informacje już znałem :stuck_out_tongue:

skoro tak, to w jaki sposób język 'wyższego poziomu' jest zrozumiały dla języka 'niższego poziomu'. W jaki sposób kod '$time' przetwarza na jezyk niższego poziomu. A może inaczej, na jakiej zasadzie działa język niższego poziomu (od '$time' do asemblera aż po system dwójkowy?) o ile jest to możliwe do opisania, bo ja nie pojmuje tego, jak może komputer rozumieć język, którego jeszcze nie było zanim dany model komputera powstał, a bardzo chcialbym zrozumieć :stuck_out_tongue:

Nie interesuje mnie tylko php, to tylko przykład.


(Sawyer47) #5

Po prostu kod wyższego poziomu jest tłumaczony do kodu maszynowego, a ten został stworzony "razem" z procesorem i jest z nim ściśle związany.


(kamil_w) #6

Jest coś takiego jak biblioteki (np Framework.NET). Pisząc jakiś kod w C# (a w zasadzie odpalając go) kompilator sprawdza biblioteki .NETowe. W nich znajduje się kod maszynowy, który jest wykonywany. Działa to mniej więcej jak stronka tnij.org czy jakoś tak - ty piszesz krótki link, a przeglądarka odpala długi link, który kryje się pod tym twoim skróconym.


(Rishikbp) #7

a na jakiej zasadzie dane wyrażenie z języka programowania (np C) jest odpowiednikiem kodu maszynowego? Gdzie on ma 'zapisane' że taki i taki kod jest odpowiednikiem (skrótem) takiego i takiego kodu maszynowego?

Nie wiem co to są te biblioteki (.NET Framework, itp) choć słyszałem o czymś takim. Na czym to polega, do czego one slużą, jak działają i gdzie są potrzebne/przydatne?


(Sawyer47) #8

Kompilator danego języka tłumaczy kod na kod maszynowy, ale nie jest to raczej tłumaczenie słownikowe, 1 do 1. Wiadomo, że dąży się aby generowany kod był szybki więc w grę wchodzi wiele zabiegów optymalizacji.


(Rishikbp) #9

komplikator języka? O co dokładnie chodzi?

Czy jeżeli napiszemy jakiś program w jakimś języku, to będzie on tłumaczony wg takiego 'słownika', jaki nadaje rozszerzenie pliku? (tak to teraz chwytam :p)

co z tymi bibliotekami (jak dodałem w poprzednim poście)


(Sawyer47) #10

Nie komplikator, a kompilator. Poczytaj http://pl.wikipedia.org/wiki/Kompilator , nie ma sensu powtarzać tutaj tych informacji.

Nie da się udzielić zwięzłych odpowiedzi na tak ogólnie postawione pytania. Jeśli naprawdę chcesz wiedzieć, poszukaj może jakiejś książki.


(kamil_w) #11

Tak jak wcześniej wspomniałem - trylogia Tolkiena może być przy tym jak nowelka.


(Rishikbp) #12

ale że nieda sie udzielić na pytania związane z biblioteką .net? Ja tylko chciałbym się dowiedzieć na czym to polega, do czego służy. Co do języków to nie do końca rozumię w jaki sposób jest on tłumaczony na kod maszynowy, ale obejdzie sie, licze że mnie w końcu oświeci.

Odpalę sobie dos'a i spróbuję przy tym systemie napisać jakiś program, gdyż nigdy z dosem nie miałem do czynienia i niemam pojęcia JAK moża napisać jakikolwiek program (wiem że w windowsie wystarczy zwykły notatnik, ale w dos'ie? Jak ktoś podpowie coś na start będe wdzięczny)

Tak więc co to są te biblioteki (.net framework) i jak w dosie cokolwiek napisać, ogólnie jak się poruszać.

(tak wiem, to nie trzyma się tematu, ale chciałbym się tego dowiedzieć, a nie bede otwieral nowego. Po odpowiedzi na moje pytania myślę, że temat bedzie można zamknąć


(somekind) #13

Do programowania. Dostarcza funkcjonalności typu operacje na plikach, obsługa protokółów sieciowych, baz danych, wyświetlania grafiki, obliczeń matematycznych, przetwarzania danych, biblioteki kontrolek dla aplikacji okienkowych oraz webowych i wiele innych. Jedna z wielu dostępnych na rynku, można na nią tworzyć programy w wielu językach. Natywną platformą uruchamiania aplikacji jest Windows.

Wystarczy Ci wiedza o tym, że robią to specjalizowane programy - kompilatory. O tym jak to się dzieje są duże książki i jest w tym dużo matmy.

Programy pisze się w językach programowania. Wybierz sobie jakiś, później ściągnij jego kompilator i być może jakiś specjalizowany do niego edytor, a potem się pobaw.


(Zulowski) #14

tu masz wytłumaczony Framework .NET, chociaż po twoich pytaniach nie wiem czy to zinterpretujesz:

framework.jpg