Doporučte programovací jazyk pro Windows

Re:Doporučte programovací jazyk pro Windows
« Odpověď #60 kdy: 22. 02. 2020, 01:51:47 »
ANSI sekvence ESC25l vam nefunguje?
Asi nefunguje :(

Tak asi nebo urcite??? Zkousel jste to?


bmn

  • ***
  • 145
    • Zobrazit profil
    • E-mail
Re:Doporučte programovací jazyk pro Windows
« Odpověď #61 kdy: 22. 02. 2020, 02:51:53 »
FYI, pro win, běh ve win konzole, pokud je na mysli textový kurzor
Kód: [Vybrat]
HANDLE h=::GetStdHandle(STD_OUTPUT_HANDLE);
 CONSOLE_CURSOR_INFO info;
 info.dwSize = sizeof(info);
 info.bVisible = false;
 SetConsoleCursorInfo(h,&info);
Pochopitelně nezávisí na jazyce (i když příklad je c++), ale na znalostech win api

P.S.: Nezapomenout kurzor pak zase zapnout (je-li třeba), jinak zůstane vypnut i po ukončení, v příkazové řádce dané konzole.

qelurg

  • ****
  • 372
    • Zobrazit profil
    • E-mail
Re:Doporučte programovací jazyk pro Windows
« Odpověď #62 kdy: 22. 02. 2020, 05:19:06 »
Ta získaná závislost na IDE spíš říká něco o tom, že člověk prostě nechce pracovat s podřadnými nástroji když vyzkoušel lepší.
To je tvrzeni do pranice (nebo flame, jak se dnes rika). Mozna reakce je, ja take nechci pouzivat podradne editory, proto pouzivam vim. Ale pragmaticky vzato, ja si myslim, ze dobre programovani je o vytvareni kvalitniho kodu a generatory kodu neboli ide k tomu nevedou, naopak vedou k rade zlozvyku. Ale to ten vim obcas taky.

Re:Doporučte programovací jazyk pro Windows
« Odpověď #63 kdy: 22. 02. 2020, 09:09:27 »
Jak spočítat ve vektoru počet položek - nemožné - 4 hodiny života - bez výsledku. Fakt nevím..

Kód: [Vybrat]
vector<int> a;
int velikost;
velikost = a.size();

Tři minuty googlení :-)

Re:Doporučte programovací jazyk pro Windows
« Odpověď #64 kdy: 22. 02. 2020, 10:11:43 »
...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_emulator
https://en.wikipedia.org/wiki/List_of_terminal_emulators
https://en.wikipedia.org/wiki/Windows_Console
http://man7.org/linux/man-pages/man3/termios.3.html
https://en.wikibooks.org/wiki/X86_Disassembly/Calling_Conventions

Našel by se i těžší kalibr a specifičtější věci, kdyžtak si řekněte.


Re:Doporučte programovací jazyk pro Windows
« Odpověď #65 kdy: 22. 02. 2020, 13:12:48 »
ANSI sekvence ESC25l vam nefunguje?
Asi nefunguje :(

Tak asi nebo urcite??? Zkousel jste to?

Jasně, že jsem to zkoušel, ono se to tváří, že je to ok, ale realita je někde jinde. Na tohle byl nejlepší ncurses.

Re:Doporučte programovací jazyk pro Windows
« Odpověď #66 kdy: 22. 02. 2020, 13:17:02 »
Jak spočítat ve vektoru počet položek - nemožné - 4 hodiny života - bez výsledku. Fakt nevím..

Kód: [Vybrat]
vector<int> a;
int velikost;
velikost = a.size();

Tři minuty googlení :-)

Jistě, tři minuty googlení, na webu je spousta rad o ničem - prostě nefungují.

Mlocik97

  • *****
  • 831
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
Re:Doporučte programovací jazyk pro Windows
« Odpověď #67 kdy: 22. 02. 2020, 14:08:59 »
Díky za tipy
V JavaScriptu něco málo dělám, ale že by uměl to co jsem poptával tomu fakt neumí. Práce se soubory je nulová - nemá přístup k souborům.

modul fs? https://nodejs.org/api/fs.html

Re:Doporučte programovací jazyk pro Windows
« Odpověď #68 kdy: 22. 02. 2020, 14:12:41 »
ANSI sekvence ESC25l vam nefunguje?
Asi nefunguje :(

Tak asi nebo urcite??? Zkousel jste to?

Jasně, že jsem to zkoušel, ono se to tváří, že je to ok, ale realita je někde jinde. Na tohle byl nejlepší ncurses.

Koukám Vy nejste úplně nepolíbenej :-)

Re:Doporučte programovací jazyk pro Windows
« Odpověď #69 kdy: 22. 02. 2020, 14:59:44 »
Zatím se mi tedy nejvíc líbí C#, sice nevím ani jak se to čte (asi cékřížek?)  8) ale asi to zkusím.
Když něco hledám a dám k tomu C# vždy to najde nějaký .NET Framevork, jaký je mezi nimi rozdíl?
.NET Framework vs .NET Core. Dá se to popsat jednou větou? Díky

.NET Core je názov pre maldšieho brata .NET Frameworku.

1. Cielom .Net frameworku je ponúknuť čo najbohatšiu univerzálnu sadu knižníc na rôzne typy problémov. Nevýhoda .NET Frameworku je že niektoré jeho časti sú závislé na OS (napríklad UI toolkit WPF- Windows Presentation Foundation by sa na linux alebo Mac ani nedal preportovať, to isté podpora Direct 3D atď)

2. Cielom .NET Core je platformová nezávislosť. Ale tým pádom je tam toho menej. Niektoré záležitosti čo sú v .NET Frameworku v .NET Core nenájdeš. Nenájdeš v ňom WPF, knižnice na vývoj okenných aplikácií, ani knižnice pre prácu s 3D grafikou a vývoj hier. Je to podmnožina .NET FW s pár vylepšeniami.

.NET Framework sa hodí pre vývoj komplexných aplikácií ktoré sú naviazané na HW a OS. Napríklad na hry alebo komplexné grafické aplikácie. Samozrejme ide to aj v .NET Core, ale tam sa už musíš spolahnúť na knižnice tretích strán.

.NET Core sa hodí pre vývoj multiplatformných aplikácií (napr Webovky, Mobilné appky, konzolové appky, serverové appky atď)

Na 99% účelov ti stačí .NET Core a tam kde .NET Coru dochádzajú sily treba použiť .NET Framework. Tieto dva FW majú podobné API takže keď sa naučíš .NET Core poradíš si aj s .NET Frameworkom.

Potom je tu ešte .NET Standard čo je typ projektu, ktorý je kompatibilný aj s .NET Core aj s .NET Frameworkom.

Re:Doporučte programovací jazyk pro Windows
« Odpověď #70 kdy: 22. 02. 2020, 15:33:44 »
Ne že bych to znal v praxi (NET nepožívám), ale NET Core 3 už prý má GUI komponenty - WinForms, WPF and Universal Windows Platform:
Citace
Prior to .NET Core 3.0, it did not implement Windows Forms or Windows Presentation Foundation (WPF) which render the standard GUI for desktop software on Windows;[32][33] however, .NET Core 3 supports desktop technologies WinForms, WPF and Universal Windows Platform (UWP).[34] .NET Core supports use of NuGet packages. Unlike .NET Framework, which is serviced using Windows Update, .NET Core relies on its package manager to receive updates.[32][33]

Re:Doporučte programovací jazyk pro Windows
« Odpověď #71 kdy: 22. 02. 2020, 18:42:51 »
Jak spočítat ve vektoru počet položek - nemožné - 4 hodiny života - bez výsledku. Fakt nevím..

Kód: [Vybrat]
vector<int> a;
int velikost;
velikost = a.size();

Tři minuty googlení :-)

Ono by stačilo, kdyby si přečetl, co mu bylo psátno zde. :)

Re:Doporučte programovací jazyk pro Windows
« Odpověď #72 kdy: 22. 02. 2020, 23:10:02 »
Jak spočítat ve vektoru počet položek - nemožné - 4 hodiny života - bez výsledku. Fakt nevím..

Kód: [Vybrat]
vector<int> a;
int velikost;
velikost = a.size();

Tři minuty googlení :-)

Ono by stačilo, kdyby si přečetl, co mu bylo psátno zde. :)

Aha... v tom případě se zdá, že si tazatel není vědom rozdílu mezi základním céčkovým polem, které se definuje pomocí

Kód: [Vybrat]
int moje_pole[8]; // počet prvků je pevný, daný v okamžiku definice/alokace
a kontejnerovými objekty v C++, z nichž asi nejbližší tomu základnímu poli je std::vector :
Kód: [Vybrat]
vector<int> moje_pole; // počet prvků se může měnit
Klasické céčkové statické pole je vlastně jenom kus paměti o určité velikosti. Hranatými závorkami se vlastně řeší jenom pointerová aritmetika. Statické pole není pokročilý C++ kontejner, nemá metodu .size().

V klasickém céčku je řetězec znaků vlastně taky jenom hloupé statické pole:

Kód: [Vybrat]
// statická definice/alokace s explicitně daným počtem znaků
char pozdrav[10];

// statická definice/alokace,
// počet znaků k alokaci je zadán nepřímo (spočítá ho kompilátor)
char pozdrav[] = {'a','h','o','j',0};

//  řetězec "ahoj" je součást executable bináru, proměnná "pozdrav"
// je prostě jen inicializována na pointer na tento řetězec
char* pozdrav = "ahoj";

Ve všech třech případech je proměnná "pozdrav" ve výsledku typu char*, tj. pointer na znak (pointer na bajt se znaménkem, interpretovatelný podle okolností buď jako číslo nebo jako písmenko.)

Do hloupého statického pole se dají vložit taky pointery na řetězce...

Takže v céčku:

Kód: [Vybrat]
char* pozdravy[] = {"ahoj", "nazdar", "cau"}; // velikost pole je pevně daná (3 položky)
Proměnná "pozdravy" je typu char**, tzn. pointer na pointer na bajt se znaménkem.

Ekvivalent v C++ např.:

Kód: [Vybrat]
std::vector<std::string> pozdravy; // počet položek se může v čase měnit, na pozadí se to řeší realokacemi

V téhle C++ variantě std::string je kontejnerový objekt (obsahuje řetězec znaků o dynamické délce) a std::vector je taky realokovaný dynamicky. Dynamický kontejner dynamických kontejnerů.
Pokud v C++ zavoláte sizeof(string), dostanete velikost kontejnerového objektu, která ale neobsahuje velikost vlastních dat = nějakého prostého bufferu na úrovni
Kód: [Vybrat]
char pozdrav[]
Jak pravil Hašek ústy Švejka, uvnitř zeměkoule je ještě jedna, a ta vnitřní je větší než ta vnější. Finta je v tom, že objekt "std::string" má mezi svými membery nějaký privátní pointer na buffer skutečných dat typu char[] .

Mně osobně dost dlouho trvalo, než jsem si začal všímat rozdílů mezi C a C++. První céčko, které jsem dostal do pazour, bylo Borland C++ v DOSu - a tam se kolem rozdílů mezi C a C++ velké cavyky nedělaly, kompilátor na pozadí Borlandího IDE vzal všecko. Teprve když jsem si začal hrát s gcc/g++, pár věcí mi došlo :-)

Re:Doporučte programovací jazyk pro Windows
« Odpověď #73 kdy: 23. 02. 2020, 00:38:34 »
C# je pro začátečníka asi nejlepší. U ostatních budeš týden řešit, proč to hlásí chyby a nejde spustit. Uděláš v tom cokoli. Já v tom dělám většinou malé aplikace např. stáhnutí přílohy emailu z outlooku, poznámkový blok, bota na trading. Viděl jsem v tom napsaný wow server, co jsem pouštěl na linuxu.

Re:Doporučte programovací jazyk pro Windows
« Odpověď #74 kdy: 23. 02. 2020, 09:11:13 »
C# je pro začátečníka asi nejlepší. U ostatních budeš týden řešit, proč to hlásí chyby a nejde spustit. Uděláš v tom cokoli. Já v tom dělám většinou malé aplikace např. stáhnutí přílohy emailu z outlooku, poznámkový blok, bota na trading. Viděl jsem v tom napsaný wow server, co jsem pouštěl na linuxu.

Proc ne konzistentnejsi F#?