Zrozumienie przez laika podstaw działania komputera.

Zrozumienie przez laika podstaw działania komputera.
LM
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 9 lat
  • Postów:57
0

Witam,

Słowem wstępu: mam 29 lat i dwa tygodnie temu przez przypadek "odkryłem" frajdę jaką daje programowanie. Wybrałem Python i jest super. Kilka noce zarwanych już było ;) Dodam, że jestem totalnym laikiem w kwestiach informatycznych.

Pytanie jakie chce zadać brzmi: co powinienem wiedzieć, aby lepiej zrozumieć, lub żeby w ogóle pojąć zasadę działania komputera. Nie mam na myśli informacji typu CPU odpowiada za x rzeczy, tylko jak faktycznie to funkcjonuje. Oczywiście szukam tych informacji w sieci, ale nie mogę nigdzie tego znaleźć w bardziej usystematyzowanej i skoncentrowanej formie.

Proszę o jakąś wskazówkę, informacje co powinienem wiedzieć, bo trochę się gubię. Myślałem o jakimś podręczniku dla kierunku informatycznego, jednak chciałbym pierw prosić o waszą opinię.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Tuchów
  • Postów:12164
3

@LMR - a po co Ci wiedza z zakresu działania komputera do programowania? Twoim zadaniem będzie pisanie softu, a to jak działają podzespoły komputera i co za co odowiada nie musisz wiedzieć; Nie zrozum mnie źle - oczywiście możesz zagłębić się w ten temat do woli, jednak do samego programowania nie jest to potrzebne;

Niedawno ktoś z forumowiczów, programistów etatowych (jak domniemam) pochwalił się, że nie umie nawet wymienić HDD :D

Jeśli już chcesz coś więcej wiedzieć w tym temacie, to szukaj materiałów po angielsku - jest ich dużo więcej i z reguły zawierają więcej cennych informacji; Ale to już raczej elektronika niż programowanie.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
Zobacz pozostałe 45 komentarzy
ShookTea
@furious programming pobawiliśmy się w moderację i przerwaliśmy piękną gównoburzę :D Choć przykre to, bo nie będzie co czytać przez dłuższy czas :(
dam1an
No dawaj, na pewno coś wymyślisz :D A tak na serio, nie można wyłączyć powiadomień w swoim poście?
panryz
dlatego ja wyłączyłem obserwacje :D
Demonical Monk
@ShookTea: nie rozumiem o czym piszesz
LM
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 9 lat
  • Postów:57
0

Ok, to inaczej. Czy jest coś takiego, jak -nazwijmy to - "elementarz programisty"? Czyli niezbędny zakres wiedzy potrzebny do tego, żeby programować. Zapewne różni się on od założonych celów, ale chodzi mi o takie podstawy.

Przepraszam, ale ciężko mi sformułować odpowiednie pytanie w dziedzinie o której nie mam za bardzo pojęcia.

edytowany 1x, ostatnio: LMR
Wizzie
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 7 lat
0

Zależy co programujesz. Jeżeli chcesz pisać prosty backend w Django przykładowo (przykład dla Pythona), albo frontend, to taka wiedza nie jest ci potrzebna. Jeżeli chcesz pisać jakieś niskopoziomowe rzeczy w C, C++ itd. to jak najbardziej jest to potrzebne.

<font size="0.5">backend - oprogramowanie po stronie serwera, frontend - to co widzisz (np. w przeglądarce)</span>

edytowany 1x, ostatnio: Wizzie
flowCRANE
To też zależy - sam C jest niskopoziomowy; Raczej chodzi o jakieś sterowniki, mikrokontrolery, embedded.
Demonical Monk
  • Rejestracja:około 17 lat
  • Ostatnio:10 miesięcy
2
furious programming napisał(a):

@LMR - a po co Ci wiedza z zakresu działania komputera do programowania? Twoim zadaniem będzie pisanie softu, a to jak działają podzespoły komputera i co za co odowiada nie musisz wiedzieć; Nie zrozum mnie źle - oczywiście możesz zagłębić się w ten temat do woli, jednak do samego programowania nie jest to potrzebne;

Traktowanie komputera jako "magicznego pudełka" oczywiście nie uniemożliwia programowania. Korzystasz w swoim Delphi zaawansowanej zewnętrznej biblioteki (closed source), powiedzmy - DLLka do obsługi rozproszonego systemu plików. Wywołania wydają się OK, mimo to leci access violation gdzieś ze środka biblioteki.

  • testujesz argumenty na pałę i liczysz że zadziała
  • zgłaszasz się do producenta biblioteki, który nie ma pojęcia na czym polega Twój projekt i dwa tygodnie szukacie przyczyny
  • odpalasz debugger i oglądasz asma, analizujesz punkt wyłożenia się biblioteki i wyciągasz wnioski

Która opcja jest najbardziej logiczna? Sensownie nie zdebugujesz nie mając podstaw low level, sposobu działania systemu pod którym to chodzi itp.


Women were the reason I became a monk - and, ah, the reason I switched back...
edytowany 1x, ostatnio: Demonical Monk
Zobacz pozostałe 7 komentarzy
Demonical Monk
nie wszystko jest hello worldem, nie zawsze autor nadal zajmuje się swoim projektem
Patryk27
Ale generalnie rozumiem do czego dążysz i jestem za, tylko akurat przykład taki podałeś ;)
Demonical Monk
w przypadku corpo te "dwa tygodnie" to dość optymistyczny scenariusz...
Demonical Monk
najgorzej jak autor jest kretynem i sam nie wie co zrobił, wtedy ktoś w którejś firmie i tak musi sięgać po debugger
DibbyDum
Pół biedy jak można jeszcze włączyć dodatkowe logi w takiej DLLce. :-)
LM
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 9 lat
  • Postów:57
0

Na tę chwilę piszę co się da ;) Nie mam z tym jakiś konkretnych planów związanych. Po prostu daje mi to ogromną satysfakcję i frajdę. Tym bardziej, że dzięki temu stale się rozwijam.

Co do front end jak i back, to nie jestem zainteresowany. Znam trochę html i css, ale jakoś tworzenie stronek mnie nie pociąga.

drorat1
Ale python jest językiem wysokiego poziomu, więc trochę nie rozumiem tego wątku. Co innego jak programujesz w asemblerze albo w C++ (wyższy poziom ale ma możliwość dodawania wstawek w asemblerze).
LM
@drorat1 W moim drugim poście sprecyzowałem o co chodzi. Jaka wiedza jest potrzebna, lub jest przydatna w programowaniu?
panryz
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 3 godziny
0

Może mobilki ?

LM
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 9 lat
  • Postów:57
0

Tak jak napisałem w pierwszym poście - dwa tygodnie temu zacząłem i chyba musi trochę czasu minąć, żebym juz z jakimś minimalnym doświadczeniem, oraz wiedzą podjął konkretna decyzję. Zresztą widać jak jest - wiem, że nic nie wiem ;)

edytowany 2x, ostatnio: flowCRANE
merlinnot
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 5 lat
  • Lokalizacja:Wrocław
  • Postów:292
1

Musisz znaleźć sobie jakiś porządny tutorial do języka, który Cię zainteresuje. Później musisz po kolei, powolutku czytać (od początku do końca, nie od środka). Często jest tak, że jak coś Cię "zajara" to omijasz ważne podstawy, które nie są aż tak, Twoim zdaniem, interesujące. Przykład dobrego tutoriala: http://learnyouahaskell.com/chapters

Tylko nie zaczynaj uczyć się tego języka, do którego jest ten tutorial, bo gdybym Ci to polecił na początek, inni forumowicze by mnie zjedli. Takie języki to moje osobiste zboczenie.

Zobacz pozostałe 2 komentarze
KA
co to za avatar i nick? reklamujesz farbe z liroj merlin?
niezdecydowany
niezdecydowany
a co jeżeli tak ? każdy orze jak może [tak mówią prawilne rapsy https://www.youtube.com/watch?v=FGZEkPa9ezo] :D:D
LM
Dziękuję :) To się akurat przyda. A czy mógłbyś się odnieść do tego o czym również pisałem? To znaczy: co jest przydatne - w sensie wiedza, umiejętność - w programowaniu?
merlinnot
@karolinaa Ale wredna jesteś, wiesz? ;)
MD
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 8 lat
  • Postów:280
2

Przedstawię ci połowę wiedzy którą mam o budowie komputerów jeżeli nie wiesz ;p
"Procesor rozumie tylko jest prąd lub nie ma prądu tzn 1/0 - taki jeden to bit
Na początku programowano pisząc takie sekwencje zero-jedynkowe.
Jakiś taki ciąg 10011000 mógł oznaczać operacje dodaj dla procesora
Ale po tym jak walnela satelita na niebie bo sie programista pomylil (zle cos wpisal) wymyslono nowy system
podzielono bity na bajty 8 bitów = 1 bajt "10100011" to jeden bajt te z kolei na 2 oddzielne 1010 0011 i zastosowano system heksadecymalny
czyli tutaj zamiana 1010 = A 0011 = 3, czyli zapis tego bajtu to A3 i teraz to byl nasz rozkaz jakis. Po rozkazie pozniej podaje sie liczbe lub rejestr (cos jak zmienna) Jak nie wiesz o co chodzi to doczytaj, gdzieś indziej. Ważne tylko jest, że później zastąpiono np. A3 które może oznaczać odejmowanie nazwą SUB tak powstał Assembly i jeden z pierwszych języków którego zadaniem jest zamiana tego SUB, żeby rozumiał procesor czyli na A3 (oraz oczywiście innych rozkazów) i to się fachowo nazywa interpreter, ale był to język niskiejjjj abstrakcji.

I teraz kompilator to program który zamienia ci twój pisany kod w jakimś języku na assembly, a później assembler zamienia ci na heksadecymalne wartości, tudzież jedynki. I tak powstaje program".

Akurat to takie podstawy, które powinien znać chyba każdy programista przynajmniej nie dokładnie (sam nie wiem czy gdzieś się teraz nie walnąłem ^^). Mówię ci to bo znam mnóstwo ludzi (niby programistów), którzy nie odróżniają IDE od kompilatora, bo pominęli takie coś a to ciężki błąd :P

edytowany 5x, ostatnio: MoorfoxD
Demonical Monk
Strasznie to naciągane.
RA
nie prąd tylko napięcie określa logiczne 0 albo 1
MD
Fakt, a miałem dopisać obok zwykle 0V/5V. @Demonical Monk raczej wszystko w niezbędnym skrócie nie chce mi się opisywać tego bardzo dokładnie
RA
0V/5V też nie jest do końca prawdą:) Niektóre układy logiczne pracują na 3V3 i nie koniecznie obsługują nawet 5V logikę. A są urządzenia które mogą nadać stan 1 logicznej już od 1,5V choć same pracują na 5V.
MD
"zwykle 0V/5V" dlatego napisalem zwykle ;p
Demonical Monk
@MoorfoxD - to nie ma znaczenia, bardziej kluczowa jest wiedza o tym, jak działa kompilator i jak wygląda nasz program w postaci assembly.
MD
@Demonical Monk Tylko, że ta część jest trudna do opisania i starałem się jej uniknąć. Gdybym próbował o tym powiedzieć zajęło by mi to całą stronę w temacie, a wynikał by z tego tylko bełkot, chociaż już tak to wygląda. Działanie kompilatora jest skrótowe, a postać assembly kazałem mu doczytać jak chce wiedzieć.
szopenfx
  • Rejestracja:ponad 20 lat
  • Ostatnio:4 miesiące
1

Poszukaj czegoś na temat "Architektura systemów komputerowych" pierwsze lepsze z brzegu http://wazniak.mimuw.edu.pl/index.php?title=Architektura_systemów_komputerowych ale nie wiem czy to jest przystępnie tam opisane - zazwyczaj tak nazywa się jeden z przedmiotów na studiach o kierunku Informatyka i chyba pokrywa się z tym co cię interesuje. Natomiast jak już zostało wspomniane wiele rzeczy w językach wysokiego poziomu jest ukrywane i upraszczane przez system operacyjny lub język/biblioteki dla programisty. Pewne rzeczy mógłbyś pisać bardziej optymalnie jeśli zdasz sobie sprawę z budowy stosu, dostępu do pamięci czy operacji dyskowych, ale jeśli masz dobrą książkę do swojego języka z pewnością opisana zostanie różnica np. pomiędzy dostępem ciągłym do pamięci a przypadkowym bez wdawania się w szczegóły techniczne (wtedy trzeba trochę wierzyć, że robi się tak i już).

HE
Materiały z tej strony powinny być OK, mój wykładowca je polecał :)
XE
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 9 lat
  • Postów:3
0

Sądzę, ze pisząc a assemblerze dobrze wiedzieć jak działa CPU...

merlinnot
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 5 lat
  • Lokalizacja:Wrocław
  • Postów:292
0

Pytanie padło, "co jest przydatne - w sensie wiedza, umiejętność - w programowaniu?".

W programowaniu ważna jest liczba 42. Jest to odpowiedź na wielkie pytanie o życie, wszechświat i całą resztę.

A tek serio, to może http://www.theguardian.com/info/developer-blog/2011/oct/07/programming-developer-journalist

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)