Jak zaprogramowano programowanie?

Jak zaprogramowano programowanie?
PeterZof
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:42
2

Witam, interesuje mnie jak zaprogramowano komputery? Bo przecież ktoś musiał zaprogramować programowanie?
Oraz jak to jest, że to w ogóle działa :)
Procesor np. te wszystkie urządzenia?

P.S - Czy od programistów "aż" taka wiedza jest wymgana?


"Bez matematyki, jesteśmy ślepi."
OA
Może cię zainteresować: http://www.youtube.com/watch?v=JA_G8XbVYug Gdzieś od 20:00
nerf
Szkoda, że po ang ;p
Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około godziny
2
  • Co było pierwsze: jajko czy kura?
  • Kogut.

"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
MVC
  • Rejestracja:około 13 lat
  • Ostatnio:prawie 11 lat
1

Bardzo ciekawe pytanie. Też mnie zastanawia w czym było 'napisane' oprogramowanie pierwszego komputera....

99
Ja bym stawiał na język maszynowy, tzn. wpisywanie cyferek w komórki pamięci, potem wymyślono coś takiego jak assembler
99
"wpisywanie" to uproszczenie, tak jak "cyferki" czy "komórki pamięci"
somekind
Ciekawe za co ten minus...
9
MVC napisał(a):

Bardzo ciekawe pytanie. Też mnie zastanawia w czym było 'napisane' oprogramowanie pierwszego komputera....

Przełącznikami, potem kartami perforowanymi, potem pojawiły się dyskietki and so on...

Eh, te wasze pytania.

N9
Lepiej takie niż to co maszynaz zamieszcza, albo ci różni niezalogowani :D.
MVC
@neonek911 nie wywołuj burzy :P chociaż za ten komentarz to i tak z +2 bym dał haha
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
5

@PeterZof u mnie na studiach takie informacje były wymagane, miałem semestr elektroniki analogowej żeby wiedzieć jak z tranzystorów zrobili bramki. Potem semestr techniki cyfrowej żeby wiedzieć jak wyglądają proste układy cyfrowe (i na przykład żeby wiedzieć co to w ogóle jest zegar i taktowanie układu). Potem 2 semestry techniki mikroprocesorowej, semestr Asemblerów, semestr Automatów i Języków Formalnych i 2 semestry Teorii Kompilacji ;]
O wszystkim o co pytasz można poczytać, ale to temat na kilka książek a nie na posta na forum.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
Zobacz pozostałe 2 komentarze
złoty
Gdzie studiowałeś?
Shalom
Nadal studiuje :P Informatyka na AGH
somekind
Technika cyfrowa to chyba jest w programie informatyki wszędzie (a przynajmniej na inżynierskiej)?
Shalom
Mam nadzieję ze jest, ale myśle że na bananowych uczelniach nie ma...
somekind
Hmm... http://osilek.mimuw.edu.pl/index.php?title=Siatka_6-semestralnych_studi%C3%B3w_licencjackich - czyli na licencjackich może nie być, to może być właśnie inżynierski przedmiot: http://osilek.mimuw.edu.pl/index.php?title=Siatka_7-semestralnych_studi%C3%B3w_in%C5%BCynierskich No bo w sumie po co jakimś humanistom z uniwerku wiedza o krzemie? :P
LG
LG
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 5 lat
4

Komputer to nic innego jak automat Moore'a, natomiast program to nic innego jak ciągi alfabetu wejściowego. W zależności od stanu automatu dane jest inne wejście i przejście do konkretnego innego stanu automatu. Automaty mimo, iż abstrakcyjne implementuje się jako układu sekwencyjne. W uproszczeniu można powiedzieć, że komputer to układ sekwencyjny. Tym tropem idąc tworzenie listy rozkazów asm etc. etc. i samo "programowanie" tworzy się na poziomie sprzętowym, jako logiczny układ bramek. Nie interesuje nas tutaj technologia wykonania, czy to na lampach, tranziorach czy na czymkolwiek innym, a same funkcje logiczne. Na studiach miałem parę semestrów układów cyfrowych, jak i architektury komputerów, etc. etc. To, że częśc ekstrakodu asm jest napisana w asm a nie ma znaczenia. Samo "programowanie" zostało wykute przez rzeźbiarzy w krzemie ;p

Azarien
+1 za rzeźbiarzy w krzemie
02
czemu Moore'a a nie Mealyego?
somekind
Czyli programowanie to takie stawianie zamków z piasku na plaży. :P
VT
  • Rejestracja:ponad 16 lat
  • Ostatnio:7 miesięcy
  • Postów:167
0

ja myślę, że programowanie zaprojektowano w programach do programowania programów do programowania

2

W trakcie studiów (mój kierunek to lotnictwo z ukierunkowaniem na mechanikę) szukałem szeregu możliwości projektowania. Natrafiłem na analogowe maszyny liczące, które pozwalały w pewnych zakresach przedstawić symulację zachowania statku powietrznego. Wykonanie takiej symulacji było dosyć trudne w eksploatacji i przez to drogie (wymagało dobrania bloków kondensatorów, oproników itd.), zatrudnienia wielu specjalistów, a do tego nie dawało odpowiedniej elastyczności - w konsekwencji było drogie.
W ramach realizacji różnych projektów okazywało się również, że obliczenia przybliżone (bez używania ww. rozwiązania), dzięki aproksymacji tego tam.. są efektywniejsze.
Dlatego bardzo, uproszczając temat, zaczęto stosować model zero-jedynkowy, którego wyniki obarczone błędem dałwały się przyjąć, jako wystarczające. Aparat matematyczny powstał zresztą znacznie wcześniej, ale mógł być do tego zastosowany przy wykorzystaniu 0-1 bramek opartych na lampach, później na diodach.
Patrząc na ewolucję oprogramowania raczej nie dostrzegam, aby w większości przypadków rozwój szedł od rozwiązania bardziej złożonego i lepszego ku gorszemu (wyjątkiem jest może WordPerfect, ale kto go teraz zna?). Więc naturalną koleją rzeczy najpierw się programowało ciągi zero-jedynkowe, później język symboliczny...

Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około godziny
2

"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
byku_guzio
popłakałem się :D
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
8

Tak w temacie:
user image


Demonical Monk
Co Ty zrobiłeś z tymi rezystorami? :|
Patryk27
Ja ich nie ruszałem. Trafiłem po prostu na obrazek na Kwejku :P
0

Jeżeli chcesz zainteresować się tym bardziej, polecam LogiSim i... Minecraft'a.

Lepiej Dwarf Fortress (na którym Minecraft jest niejako wzorowany) http://docs.google.com/Doc?docid=0AdISzBuNg6ZWZGd0d2t4YjlfMjJ0ejlzc2dnaA&hl=en - kompletny projekt procesora itd. :D

02
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 8 lat
  • Postów:1176
1

Bo przecież ktoś musiał zaprogramować programowanie?

Zadajesz błedne pytania. Programowanie to proces i jak na razie jeszcze nikt nie zaprogramował programowania (pomijając takie rzeczy jak programowanie genetyczne...). Jeżeli chodziło Ci o to, kto stworzył pierwszy kompilator to była to Grace Hopper: http://inventors.about.com/library/inventors/blaiken_hopper.htm

P.S - Czy od programistów "aż" taka wiedza jest wymgana?

Tak, programista powinien wiedzieć co robi.

2
0x200x20 napisał(a):

Tak, programista powinien wiedzieć co robi.

Niezliczone rzesze programistów PHP są dowodem, że powinien wiedzieć, acz nie musi :] Rynek potrzebuje tanich roboli, wytresowanych do powtarzania wyuczonych sztuczek, wysilających intelekt mniej niż ich koledzy układający kafelki.

02
ano zgadza się :)
1

@TomRiddle

Przykład 1: Pochodnia stale wysyła sygnał 1. Gdy do bloku, na którym stoi pochodnia, dojdzie sygnał 1, wtedy pochodnia zmienia sygnał na 0. W chwili, gdy do tego bloku przestanie dochodzić sygnał, pochodnia znów emituje 1. Widzimy tu NOT.

Przykład 2: Dwie pochodnie wysyłają sygnał 1 i negują inną pochodnię, więc pochodnia ta wysyła sygnał 0. Gdy zanegujemy jedną z dwóch pochodni, druga nadal będzie wysyłała sygnał 1, więc trzecia nadal będzie wysyłała 0. Dopiero, gdy do obydwóch pochodni dojdzie sygnał 1, trzecia przestanie być negowana i wyśle 1. Mamy więc AND.

Przykład 3: dwa redstone (czyli kable) po prostu się ze sobą łączą w jeden. Wystarczy więc tylko jeden sygnał 1, aby na wyjściu od razu było 1. Mamy więc OR.

Jeżeli na końcu AND lub OR doda się negację z przykładu 1, otrzymujemy odpowiednio bramki NAND i NOR. Wymyślenie, jak mają działać w grze XOR i XNOR wcale nie było trudniejsze - przecież każdą z nich można przedstawić jako 2 NOTy, 2 ORy i 1 AND. Później zostało tylko zminimalizować cały układ i gotowe.

Z tych 7 bramek można zrobić wszystko, wystarczy się troszkę znać na elektronice i zrobić np. sumator - to już jedna z części procesora.

Osobiście, zrobiłem już 8-bitowy dysk twardy i coś, co można by nazwać multiplekserem (z tym że nie przekazuje on adresu bitu, ale jedynie informację o tym, że jest przekazywana informacja głównym kablem)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.