Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Drzewo genealogiczne jezykow programowania
Forum PHP.pl > Inne > Hydepark
Volume
Tytul moze dziwny, ale czy ktos moglby mnie oswiecic jak wyglada programowanie od poczatku - od poczatku czyli jaki jezyk programowania jest tym startowym i jakie sa kolejne do osiagniecia poziomu systemu operacyjnego (np. w czym albo jak zaprogramowano jezyk C).
Czyli w czym buduje sie podwaline pod cala reszte programow i kolejnych jezykow - co jest lacznikiem miedzy podzespolami komputera a cala reszta swiata informatycznego. Ktos to w miare lopatologicznie potrafi wyjasnic?

Przyznam sie, ze temat moze jest banalny ale ciezko mi w google wyszukac az takie podstawy, nawet nie wiem jakich fraz uzyc a te co wymyslam nie daja mojej oczekiwanej odpowiedzi...
kamil4u
Jeśli Cię to interesuje to zainteresuj się mikrokontrolerami - wtedy dokładnie będziesz wiedział jak to działa.

W skrócie. Ciąg 0 i 1 to jakieś instrukcje w komputerze. Umówiono się, że pewne wyrazy typu: ADD czy SUB lub JMP oznaczają konkretny ciąg 0 i 1. I tak powstał pierwszy język zwany asemblerem. Następnie napisano w asemblerze program, który zamienia instrukcję typu wyglądająca "po ludzku" na instrukcję asemblera. Najbardziej znanym takim programem i który się przyjął jest język C.

Później już napisano w C inny język, a w innym języku jeszcze inny język. Każdy ma wady i zalety.
Miałem styczność z pisaniem kompilatora C w ... C smile.gif
Crozin
Google: compiler bootstrapping

@kamil4u: Gwoli ścisłości, nie ma języka "assembler" jako takiego. Każdy procesor, czy raczej architektura/rodzina procesorów ma swój własny "język assemblera".
abort
Zacznijmy po kolei:

- komp rozumie tylko ciąg zer i jedynek - człowiek dla łatwiejszej orientacji podzielił ciągi na bajty czy słowa. I programował tak, jak komputer umiał - składając z zer i jedynek instrukcje dla komputera. Załóżmy, że komputer miał 8 rejestrów, oznaczonych literami od A do H - i do wstawienia do rejestru A wartości 1 potrzebny był kod "0x35 0x01", ale już przy rejestrze B kod mógł brzmieć "0x71 0x01". Tak samo z dodawaniem liczby do rejestru, odejmowaniem... Programowanie szybko zaczęło męczyć. Ponieważ jednak (Crozin dobrze gada, polać mu) każdy producent procesora podawał (w specyfikacji procesora) takie rzeczy jak mnemonik (czyli : ADD, SUB, MOV, JMP, ...), i wartość, jaka temu mnemonikowi odpowiada (+opcjonalnie parametry), stosunkowo łatwo było napisać sobie...

- ASEMBLER - czyli tłumacz mnemoników bezpośrednio na binarny kod maszynowy. Dodatkową zaletą pisania w asemblerze stało się to, że już nie trzeba było przeliczać adresów do skoków (JMP), asembler sam potrafił o to zadbać, trzeba było tylko w odpowiednim miejscu kodu umieścić tzw. etykietę, którą podawało się w instrukcjach JMP czy CALL jako adres do skoku. Dodatkowo oczywiście pojawiły się automatyczne konwersje ciągu znaków (podanych w cudzysłowach) na ich kody ASCII i umieszczenie w poszczególnych komórkach pamięci, można było używać stałych... Życie stało się prostsze.

- Ale ludzie chcieli więcej i łatwiej, i dlatego już w latach '50-'60 powstały takie języki jak Fortran (do dziś wielu naukowców go używa, z uwagi na nieprawdopodobnie dobrej jakości biblioteki numeryczne), Algol (prekursor Pascala) czy Cobol (język dla biznesu). Nieco później (na początku lat '70) powstały dopiero C czy Prolog.

Z ciekawostek: C, C++, Unix, tranzystor - to wszystko łączą dwa słowa: "Bell Labs".

P.S.
Zobacz sobie http://www.thegeekstuff.com/2011/10/c-prog...-an-executable/ - tu masz fajnie pokazane, jak linuksowy gcc kompiluje program "Hello World", a także (co może Cię bardziej zainteresować), jak wygląda kod asemblera takiego programu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.