...ono je těžké radit dnešním mladým, odkud začít, když já osobně jsem zažil "ty počítače" z mého naivního pohledu dost od začátku :-D
Tak jako v každé "znalostní bázi" - mentální mapa znalostí je amorfní klubko, je třeba začít "prostě odněkud", a ať si vyberete jakýkoli konkrétní bod, budete začínat "od prostředka" a pátrat do šířky. A chválím
Programovací jazyk nežije ve vzduchoprázdnu. Vždycky se pohybujete v nějakém "okolním prostředí" - tradičně v různých operačních systémech a textových nebo vizuálních prostředích. Váš programovací jazyk řeší syntaxí jenom zcela základní věci (práci s proměnnými, aritmetiku, datové typy, volání funkcí, objektovost) ale na jakoukoli "interakci s prostředím" si volá funkce, dostupné v knihovnách - v základní knihovně distribuované s kompilátorem/interpreterem, a v knihovnách třetích stran. Jazyky vyšší úrovně toho "syntaxí" řeší třeba trochu víc, ale když pak chcete nějakou detailnější práci s okolním prostředím, začnou připomínat svěrací kazajku. Některé programovací jazyky jsou specifické pro konkrétní úlohy, a přidat třeba rozšíření pro konkrétní funkce operačního systému je dost přes koleno.
Pro mě osobně je základem C a C++. V tom jsou napsané dnešní operační systémy, a v těchto jazycích se obvykle píšou "bindings" na knihovny třetích stran. Tzn. vemte si libovolný jazyk vysoké úrovně, z větší části třeba napsaný "sám v sobě", ale určitá část, konkrétně vazby na okolní prostředí, je třeba stejně napsat v Céčku.
Dneska nemůžou všichni umět všechno. Asi jsem postižený tím, že jsem systémák. Pro mě je C a C++ součást základní systémácké gramotnosti. Přesněji řečeno: C a základy C++ a v hrubých obrysech základní doprovodné nástroje, zejm. tradiční Make. Tzn. umět s malou dopomocí manuálu spustit gcc v příkazovém řádku, a oskriptovat automatickou kompilaci a linkování pomocí Makefile. Protože nerad "stavím barák od střechy".
Pokud máte čas trochu číst bez vazby na konkrétní úkol, možná doporučuji prolistovat pár čtivějších knížek, jako je
Linux - začínáme programovat nebo
Thinking in C++ od Bruce Eckela. A třeba cokoli od Pavla Satrapy - jenom škoda, že nepíše o C/C++. A zkuste si nastudovat něco o aspektech céčka jakožto "vylepšeném assembleru" ;-) Ony Vám ty střípky třeba začnou v hlavě zapadat dohromady. Jak říkám - míním to spíš jako čtení pro širší přehled.
Pokud jste windowsář, zkuste si jen tak ze sportu nainstalovat do systému MinGW gcc a g++ a make, zkompilovat si "holýma rukama" hello world atd. MinGW má trochu zvláštní standardní knihovnu - fungují základní céčkové funkce pro práci se soubory apod., na spoustu z nich pasuje dokumentace z linuxových manuálových stránek GNU libc, přitom jsou ale k dispozici i funkce Win32 API a
údajně jako skutečná standardní knihovna v pozadí je MSVC realtime library. Prostě MinGW je tak trochu
mingi :-) ale na nějaké jednoduché žužlání / konverzi souborů v divných formátech to občas použiju, v dobách před podepisováním ovladačů se v tom dal napsat i driver do NT kernelu, taky jsem v tom jednou napsal primitivní "GUI" aplikaci co bydlela prakticky jenom v systrayi... Je to způsob jak rychle zmastit holý Cčkový program pro konzolu, aniž bych musel obcovat s tlustým IDE.
Pokud jde o IDE pro MinGW C/C++, tuším jsem kdysi letmo viděl open-source
Dev C++, ale to nemá přibalenou vizuální knihovnu. Čili je to vizuální IDE pro tvorbu systémových a konzolových věcí :-) Osobně doporučuji, až třeba vyrostete z konzolových věcí, zkuste mrknout na
Ultimate++. Je to open-source, BSD licensed, má to knihovnu vizuálních widgetů a IDE s klikacím designérem GUI, umí to kompilovat pomocí MSVC nebo MinGW. Je to trochu svoje, ale v tomto směru překvapivě propracované. A vypadne z toho v zásadě nevelký stand-alone EXE, který jde pod Windows spustit kdekoli. Tzn. žádný tlustý runtime. (Že je hlavním pachatelem U++ Čech a jedna místní programátorská legenda je relativně podružná informace. Parta maintainerů je mezinárodní a ochotná, pokud se na fóru umíte správně ptát.)
Ještě k Vašemu dotazu, trochu čtení na okraj ohedně terminálových věcí a vnitřností C/C++ (pár neutříděných odkazů):
https://en.wikipedia.org/wiki/Terminal_emulatorhttps://en.wikipedia.org/wiki/List_of_terminal_emulatorshttps://en.wikipedia.org/wiki/Windows_Consolehttp://man7.org/linux/man-pages/man3/termios.3.htmlhttps://en.wikibooks.org/wiki/X86_Disassembly/Calling_ConventionsNašel by se i těžší kalibr a specifičtější věci, kdyžtak si řekněte.