- MasterDeeJay: Noname 1TB-os SATA SSD teszt
- sziku69: Fűzzük össze a szavakat :)
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Luck Dragon: Asszociációs játék. :)
- eBay-es kütyük kis pénzért
- Négymagos Xeon(!) CPU LGA775-ös deszkában
- bambano: Bambanő háza tája
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- erkxt: A Roidmi becsődölt – és senki nem szól egy szót sem?
- hcl: Kelj fel komám, ne aludjál
Új hozzászólás Aktív témák
-
CPT.Pirk
Jómunkásember
Beágyazott programozásra igen, arra a C kell. Kollégám foglalkozott rendes mikrovezérlő mellett Arduinoval is de nem igazán tetszett neki, mert rendes C programozóként az Arduinos keretrendszer inkább hátrány volt, mint előny. Az elmondása szerint az ottani dolgok nagyon azoknak készültek, akik még nem programoztak. Szóval emiatt gázos lehet Arduino után áttérni rendes C-re.
Viszont kis pénzért házhoz hoz az ebay egy NXP vagy ST Micro procis cuccot és egyből el lehet kezdeni rendes C-ben programozni.Viszont őszintén szólva a programozást meg nem beágyazott területen kezdeném. Kódolsz fél órát, beállítod az órajel forrásokat, felkonfigurálod az IO-kat, elindítod a timereidet, belövöd a watchdogot aztán eljutottál oda, hogy végre villog a panelen a debug led...
Fél óra munkával PC-n már grafikus programod van amin lehet gombokat nyomogatni és azok csinálnak is valamit.Itt még senki nem említette PC-s oldalon programozásra a Lazarust (freepascal), de csak ajánlani tudom. Hamar tanulható és elég jó közössége van fent a neten leírásokkal, segítőkkel és modul írókkal, ráadásul multiplatform és nem csak PC-re tud fordítani.
-
chey
csendes tag
Beszállnék én is egy kicsit, mert LabVIEW, C, C++ tapasztalatom is van. Szeretném leírni az előnyöket és a hátrányokat:
LabVIEW:
előny: azért jó, mert bárki (értsd: bárki) gyorsan, könnyen és fájdalommentesen meg tud benne tanulni programozni. Ha nem tudsz még programozni (vagy csak kicsit), megtanulhatod a ciklusokat, elágazásokat, ha nagyon belemélyedsz, még a többszálú tervezést, szálbiztos működést is elsajátíthatod. A debuggere futás közben, valós időben is engedi megnézni az egyes értékeket, ami egyes esetekben rendkívül előnyös. Csak és kizárólag a grafikus felhasználói felület megtervezése és átgondolása után tudsz benne bármit is fejleszteni, így nagy tapasztalatra tehetsz szert a GUI és a funkcionalitás összehangolásának terén.
hátrány: fizetős és drága. Ezen kívül nagy memóriaigényű ill. nagy számítási kapacitást igénylő feladatok elvégzésére alkalmatlan, mivel a memóriakezelése csapnivaló. Bár bizonyos mértékben befolyásolható az erőforrások elosztása, egy nagy projekt esetén valószínűleg a LabVIEW környezet korlátaiba fogsz ütközni.C++ :
Bár volt C++ tapasztalatom, az elég korlátozott volt, és mellette szinte kizárólag LabVIEW-t használhattam csak hosszú évekig. Amikor munkahelyet váltottam, a Sams Teach Yourself C++ in 24 Hours könyv 2011-es kiadásából készültem. Ennek a könyvnek az egyik első mondata az, hogy a C++ -hoz nem kell tudni C-ben programozni, sőt az akár káros is lehet. Az ezredforduló környékén készült C++ könyvek mind C-t tanítanak, csak van egy objektumorientált fejezetük (meg néhány apró eltérés, pl. printf helyett cout, stb.). A fent említett könyv más szempontból mutatja a nyelvet, ami szerintem nagymértékben lecsökkenti a tanulási időt, növeli az élvezetet a tanulás közben, és azután növeli a produktivitást.
előny: nagyméretű projekteket lehet benne áttekinthetően fejleszteni (megfelelő feljesztőkörnyezet esetén), ugyanakkor a C-ben tanult technikákkal extrém hatékony hardverközeli kód fejlesztését is lehetővé teszi. A C++ 11 már olyan funkciókat vezet be, amik jelentősen megkönnyítik a programozó életét. Ilyenek pl. garbage collector-hoz hasonló működés annak overhead-je nélkül, lambda függvények, generikus programozást segítő eszközök. Mindemellett a C++ minig törekszik a leghatékonyabb fordításra, ami pl. egy szimuláció esetén megnövelheti a számítási teljesítményt Java-val vagy C# -pal szemben. Léteznek olyan fejlesztőkörnyezetek, amikkel a Java-hoz hasonló egyszerűséggel lehet felhasználói felületet készíteni.
hátrány: az első és legfontosabb a pointerek és referenciák. Kétségtelenül hatékonyak, de nagyon észnél kell lenni a használatuk során. Ezen túl a C-vel való (nem teljes) kompatibilitás inkonzisztenciákat okoz, ami pl. a Java-ra nem jellemző.C:
Majdnem Assembly hatékonyságú kód írását teszi lehetővé, a Pascal-nál bővebb funkcionalitással. Véleményem szerint Pascal-t könnyebb tanulni, mint C-t, de megéri a befektetés. Csak akkor ajánlom a C-t, ha hardverközeli programot szeretnél írni, pl. eszközillesztőt, vagy éppen mikrovezérlő programját.
előny: pointerek és referenciák. Olyan, mintha még egy dimenziót kapna az ember.
hátrány: pointerek és referenciák. Nehéz megérteni őket, a különbséget közöttük (főleg a * és & operátorok keverése miatt), és úgy el lehet közöttük keveredni, mint vasorrú bábának a mágneses viharban.Java: nincs pointer és a C++ -ra jellemző inkonzisztencia. De lassabban is fut
Ha nem szeretnél a pointerekkel és referenciákkal bajlódni, de szeretnél nagyobb projekteket fejleszteni, válaszd a Java-t.
-
Hamuuuu
tag
Sziasztok!
Szeretném a véleményeteket kérni!Milyen nyelvet ajánlotok egy kezdőnek és ha tudtok akkor egy könyvet vagy valami gyakorló/oktató anyagot is tudnátok mondani?
Előre is köszi
-
Kezdőnek nem biztos, hogy a rövidebb jobb. Szerintem pontosan látsszon a programban mi mit csinál, ne legyen már elsőre olyan furaság, hogy az input() és a print() függvény is kiír, ami elsőre wtf lehet.
Pedig ez egy szükséges dolog a tanításnál, hogy elsőre nem magyarázunk el mindent, hanem pár dolog egyszerűen csak úgy van. Lásd pl nyelvtanulás, az elején gyakorlatilag seggelni kell a kifejezéseket, anno németül nekem még a múlt idő előtt tanították azt a mondatot "Ezt nem értettem", mivel alapvető szükség van rá. Nem lehet minden megmagyarázni először, mert elveszik a lényeg a részletekben, ezzel sajnos van bőven tapasztalatom.
C-nél vannak balfasságok igen, de kezdésnek szerintem meg lehet vele lenni. A pointerezésen nem tudom minek rugózol, mint írtam addig el sem kell menni. Megtanulod a típusokat, változó deklarációt, pár beépített függvényt, vezérlési szerkezeteket, függvényeket, aztán mehetsz is a következő nyelvre. Nem kell örökké ott maradni, csak az alapokat elsajátítani.
Az, hogy neked hasonló a Java, C++, Python, egy kezdőnek nem biztos hogy az. Tegyük fel elkezd pythonozni, majd egy másik nyelvre lesz szüksége, s megszokásból elfelejt majd ; { } jeleket kitenni, amitől hülyét kap. De említhetem azt is, hogy egy kezdőnek a whitespace egy semmitmondó dolog, nem programozó aggyal nehéz felfogni, hogy a "semmi" is a számít.
-
dabadab
titán
Vettem magamnak a fáradtságot és a fentit megírtam C-ben is. Ez lett:
#include <stdio.h>
int main(void)
{
char name[20000];
printf("What's your name?\n");
fgets(name,20000,stdin);
printf("Hello %s\n", name);
return 0;
}Csak összehasonlításnak, ismét itt ugyanez Pythonban:
name = input('Enter your name: ')
print('Hello', name)A fenti pythonos példát el lehet magyarázni egy teljesen kezdőnek úgy, hogy minden karakterről tudja, hogy miért ott van, ahol van. Ahhoz, hogy valaki ezt a C verziót megértse, legalább egy fél évnyi előtanulmány kell. Az meg szerintem nem egy túl jó pedagógia módszer, hogy úgy tanítunk valamit, hogy nem magyarázzuk el, hogy mi micsoda, hanem valamiféle voodooként kezeljük a dolgokat.
"Egyébként a pointerekhez nem kell tudni a gép belső működését."
De, mert különben egyáltalán nem érted, hogy mi is ez az egész. Lehet, hogy neked, akinek a fejében évtizedek óta összeállt a kép, ezek teljesen triviális dolgok, de kezdőként teljesen máshogy néznek ki a dolgok. Szerintem már az is hatalmas különbséget jelent, hogy egy nyelv erősen típusos, mint a C, vagy nem (mint a Python).
"Kezdésnek szerintem minél butább nyelv kell, hogy kevesebb legyen a zavaró tényező"
Szerintem a nyelvnek nem butának kell lennie, hanem egyszerűnek. Pont ezért jó a Python, hasonlítsd csak össze a két példát: kezdő szinten a Python programokban tényleg csak az lesz benne, ami kell, a C-s változatok meg tele lesznek voodooval, ami persze a kísérletezést is megnehezíti, mert pillanatok alatt bele tud futni olyan hibákba, amiket még nem is érthet, hogy miért hibák.
"Nincs semmi bajom a python szintaxisával, sőt, nekem nagyon tetszik. Csak egy kezdőnek nem biztos, hogy célszerű ezt ajánlani, mert ha más nyelvre megy, akkor jöhet a pofára esés."
A kezdőnél az a fontos, hogy a koncepciókat megértse, az meg akkor megy, ha minél kevesebb felesleges részlet viszi el a figyelmét. Egyébként meg a magam részéről a Python meg mondjuk a C++ vagy pláne a Java között alapszinten szintaktikában olyan nagyon nem látok különbséget.
-
Egy scanf esetén egy plusz & kell a változók elé, azért ez szerintem nem nehéz.
Ha pedig már komolyabb pointerezésre van szüksége valamihez, akkor pedig pont eljött az idő új programnyelvet keresni. Kezdésnek szerintem minél butább nyelv kell, hogy kevesebb legyen a zavaró tényező, de túl egzotikus se legyen, mert arról nehezebb átállni más nyelvekre.
Nincs semmi bajom a python szintaxisával, sőt, nekem nagyon tetszik. Csak egy kezdőnek nem biztos, hogy célszerű ezt ajánlani, mert ha más nyelvre megy, akkor jöhet a pofára esés.
Egyébként a pointerekhez nem kell tudni a gép belső működését. Max a címekét. Gép belső működését, akkor kell tudni ha assemblyvel címzel, na az tényleg horror, még egy tesco gazdaságos ISA-nal is.
-
Blindmouse
senior tag
Ha Arduino-ra akarsz megtanulni programozni, vagy akármilyen mikrovezérőre, akkor tanulj meg C-t.
C nélküli programozó beágyazott területen egy eunuk. -
dabadab
titán
"Amatőr hiba
"
Amatőr kifogás.
Amikor az ember egy-két évtizedet azzal töltött, hogy hatalmas, sokmilliósoros projekteken dolgozott, ahol folyamatosan új, addig még ismeretlen kódrészeken kell dolgoznia, akkor rájön arra, hogy mekkora érték az, hogy ha a kód jól olvasható és nem tud megtévesztő lenni."Minden másban is ha benyomom a kód formatot, de ezzel a pythonossal nagyon sokat szívtam egyszer egy gites fájl-al amit nagyon sokan szerkesztettek és össze vissza voltak a behúzások."
Miért nem nyomtál rá egy format code-ot?...
-
válasz
Speeedfire #18 üzenetére
Minden másban is ha benyomom a kód formatot, de ezzel a pythonossal nagyon sokat szívtam egyszer egy gites fájl-al amit nagyon sokan szerkesztettek és össze vissza voltak a behúzások. Én jobban szeretem a ; {} kombót
(#19) dabadab Amatőr hiba
-
dabadab
titán
"A python-ban az, hogy a behúzások alapján működik a compiler szerintem rohadt gáz"
Egyáltalán nem, mert így az, amit a programozó lát, meg amit a compiler lát, az ugyanaz. Mutatom egy C-s példával, hogy miért jó ez:
Az ember megírja a kódot:
if ( a == b )
equal++;Aztán később kicsit bővíti:
if ( a == b )
trace("a and b are equal");
equal++;Aztán csodálkozik, hogy miért nem jó a kód (megtörtént eset alapján).
-
dabadab
titán
A C-vel az a gond, hogy bármit csinálni akarsz, belefutsz pointerekbe meg hasonlókba, amiknek a megértéséhez a gép belső működésének egy viszonylag komolyabb átlátása szükséges - egyáltalán nem egyszerű nyelv. Ráadásul pont a móricka-feladatoknál jön elő minduntalan a printf meg a scanf, amik a változó paraméterlistájukkal tökre elütnek a szokásos C-s stílustól és ott aztán tényleg sok hülyeséget lehet csinálni, mert nulla ellenőrzés van rájuk. Pl. hogy néz már ki C-ben az az örök klasszikus, ami Pythonban így:
name = input('Enter your name: ')
print('Hello', name)Azt meg nem értem, hogy miért mondod a Pythonra, hogy elcseszett a szintaxisa, de tényleg (oké, az OO-s résznél az explicit selfezés az tényleg az ember agyára tud menni, de mondjuk abban meg látok pedagógia értéket).
-
Kezdésnek jó a C, megtanulni az alapokat, a C++ kicsit durva lenne, ott már eleve OOP minden. Első kódnak jobb egy print("Hello world!");, mint egy std::cout << "Hello world!" << endl;, mert utóbbinál elsőre nem teljesen világos, hogy mi történik. Túl sok "felesleges" dolog van benne, ami eltereli a figyelmet. Persze akik nem először látnak kódot, az utóbbi biztos jobban tetszik, de most tanulásról van szó.
Python, Javascript meg hasonló izgi nyelveket azért nem ajánlanék elsőre, mert pl az előbbinek elcseszett egy szintaxisa van, utóbbi meg egy gusztustalan nyelv. Egyiket se fikázni akarom, csak egy kezdő szemével próbálom nézni a dolgot. Valamin elkezdi, aztán azt a nyelvet úgyis dobni fogja, szóval érdemes a többséghez hasonlóval botegyszerű nyelvvel kezdeni, nem pedig valami egzotikus csodával, ami szép meg minden, de amúgy hujjaj, lásd Ruby.
Ha pedig sikerült elsajátítani az alapokat, akkor lehet nekiállni C++ / Java / C# / stb nyelven programozni és eldönteni, hogy tetszik-e az OOP vagy igen.
-
dabadab
titán
Egyébként hogy értelmesen is hozzászóljak, C-t szerintem nem érdemes, mert az gyakorlatilag egy plat... izé, értitek
A szokásos javaslatom a Python: script nyelv, ami miatt könnyű vele játszadozni, egyszerű dolgokat egyszerűen meg lehet benne csinálni, de tud bonyolult dolgokat is, OO-t is és egy ténylegesen létező, széleskörűen támogatott nyelv.
-
yerico
senior tag
Hát sima C-ben tanuljon meg az programozni, akinek 2 anyja van. Nem ajánlom. Abban tanultam sok éve, abban írtam 2x is diplomamunkát, aztán volt 5 év C++, de utána a Java és főleg a C# maga a megváltás. C-ben programozni kb. olyan, mint Linuxot használni kizárólag PUTTY-on keresztül, telefonos nettel, távoli gépről.Lehet, de minek, ha ott van mellette a szép csillogó GUI-val ellátott másik, sokszorta erősebb gép, mindenféle jóval ellátva.
-
Írtam már C programot is avr-re meg arduino-t is szerintem mindkettőnek megvan a helye.
A C++ nagyon utálom mint nyelvet, szerintem kb. a C-re hackelt OO ami sokszor borzasztó logikátlan. Én tudok rendesen programozni C++-ban, meg java-ban is (sőt ha kell C#-ban is de azt ritkán csinálom). A javat sokkal jobban szeretem például androidos javaban nagyon jól lehet dolgozni. C++-ban is elvagyok, és sokkal ellentétben nem egy hányadékot szoktam benne alkotni, de mégis nem szeretem, pedig qt-ben is írtam már jónéhány progit.
-
buherton
őstag
"A C az gyakorlatilag platformfuggetlen assembler, ami tamogat strukturalt programozast is, manapsag mar leginkabb csak par specialis helyen hasznaljak." by dabadab
C-ben rendesen programozni? Meg lehet, de aztán nagyon beáll az agy a struktúráltságra. Saját tapasztalatomból kiindulva, C-ből rettenet nehéz megtanulni C++-ul. Számtalanszor beletört a bicskám és azóta sem tudok értelmes C++ kódot írni. Szerencsére amúgy sem kell, mert azokon a területeken, amiken dolgozok ott szinte csak C van.
Az Ardunio, nagy és lassú és nem kontrollálod a hardveres perifériákat. Átlátható programot C-ben is lehet írni minimális erőfeszítéssel.
-
Az arduino keretrendszernek nem kis overheadje van, s a mikrokontroller tudásának csak egy részét tudod vele hasznosítani, kontrollálhatatlan a "valós" kód. Arról nem is beszélve, hogy ha a fogyasztás is szempont, akkor végképp bukta. Persze nagyon egyszerű kis hobbiprojekthez jó lehet, meg bazi nagy a közösségi támogatása, de picit komolyabb dolgokra már alkalmatlan vagy fossá kell hekkelni.
Az atmega32u4 amúgy nem erősebb, csak több lába van, meg több a ram. Ezeket ki kell használni, hogy értelme legyen, nem fut tőle gyorsabb a kód.
Ha már MCU-nál tartunk, én az Texas Instruments MSP430G2 Launchpad-ot ajánlanám. Van hozzá Energia IDE, gyakorlatilag az Arduino IDE piros változata, Atmel helyett TI MCU-khoz. Ugyanazt tudja, és a Launchpad még olcsóbb is egy Arduinónál. Ha meg komolyabbat szeretnél, akkor van még Code Composer Studio is, azzal lehet alacsony szinten programozni az MSP430-at, ráadásul nagyon letisztult a "library", nincsenek 50 karakteres makrók meg függvénynevek.
-
Viszont C-ben lehet megtanulni rendesen programozni. Ha megy a C desktopon akkor utána sokkal könnyebb lesz az arduino, vagy avr c. A windows desktop meg ha nem windowsra akarsz fejleszteni szerintem programozás szempontjából felejtős, egy linux ezerszer jobban beállítható, nincsenek ócska driverek, jobb a szöveges felület stb.
A C++-al kezdés meg kész vicc.
Az arduinonak van overheadje, viszont sokkal rövidebb a kód jobban átlátható, ha viszonylag erős microcontrollered van pl.: atmega32u4 akkor annyira mindegy egy kisebb project esetén.
-
buherton
őstag
Desktop-ra egyáltalán nem ajánlom a C-t. Nagyon hárzsátos és rettenet elavult lett a C a desktopon.
Ha windows desktop, akkor alsó hangon C++/Java/C# és társaival kezdj. Ha Linux, akkor C/C++/Java/Perl/Phyton.
Ha kütyü programozás, akkor csak és kizárólag a C és ha hallgatsz rám, akkor nem Ardunio-ra fejlesztesz, hanem magára a hardverre.
-
fo_di
őstag
köszönöm szépen mindannyiótoknak, akkor keresek valami jó C-könyvet és nekifekszek
-
válasz
Speeedfire #3 üzenetére
Ja, nem neked akart menni.
-
válasz
Speeedfire #1 üzenetére
Az Ardunio egy C++ keretrendszer, amivel rendkívül egyszerű mikrovezérlőre programot gyártani. Kezdésnek azoknak javasolnám, akiknek vannak már elektronikai ismeretei, s erről az oldalról is szeretnék a megközelíteni a programozást.
Desktop app szintén nem feltétlenül jó indulásnak, nagyon sok a lehetőség, ami összekavarhat, főleg az OOP.
Én konzolos programokkal indítanék, kb minden nyelv tudja, alapokat ezzel lehet a legjobban megtanulni, mivel bot egyszerű, nincs zavaró tényező. Ezután lehet tovább menni. Első nyelv talán a C lenne a legjobb, persze csak az alapok elsajátításáig, pointerekig nem kell eljutni, max ha érdekel.
-
Speeedfire
félisten
Ha jól tudom, akkor C/C++ alapú az arduino. Ha kell desktop is, akkor C++/Java/C#.
Ezek a legnépszerűbbek, elég sok könyv is van hozzájuk.
Új hozzászólás Aktív témák
- Hamarosan leszűkíti a támogatott hardvereit az NVIDIA
- Azonnali mobilos kérdések órája
- Spórolós topik
- Telekom mobilszolgáltatások
- Autós topik
- Kerékpárosok, bringások ide!
- iPhone topik
- Milyen okostelefont vegyek?
- Friss koncepciót hoz a Nothing Phone (3)
- Acer Wave 7 Mesh: Hetediziglen
- További aktív témák...
- Bomba ár! Fujitsu LifeBook U7310 - i5-10GEN I 16GB I 256SSD I 13,3" FHD I HDMI I Cam I W11 I Gari!
- Több mint 70.000 eladott szoftverlicenc
- LG 42C4 - 42" OLED evo - 4K 144Hz - 0.1ms - NVIDIA G-Sync - FreeSync - HDMI 2.1 - A9 Gen7 CPU
- Apple iPhone 14 128GB, Kártyafüggetlen, 1 Év Garanciával
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5800X 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest