Jó választás számomra a C?

Sziasztok!

Magamról csak annyit, hogy még '94-ben érettségiztem és ott "programoztam" utoljára pascal-ban és clipperben, azt követően a számviteli főiskolán nem volt erre nagy szükségem. 2000. óta használom a linuxot és azóta kisebb nagyobb bash scripteken kívül nem írtam semmit. Strukturált programozást tanultam, anno még nem volt az iskolapadban OOP. A főiskola után a számítástechnika csak hobbinak maradt.

Elhatároztam, hogy meg kellene ismernem egy olyan "gépközeli" programnyelvet, amely segítségével majd - 1-2 év múlva talán - készíthetnék egy számlázóprogramot a saját szórakoztatásomra.

Mivel nem tanultam OOP-t, ezért autodidakta módon szerintem a C++ túl nagy falat lenne.

Amit szeretnék majd a választott programnyelvvel elérni a számlázóprogram tekintetében:
1.) kliens szerver felépítésű program, ahol a szerver az linuxon fut
2.) postgresql támogatás a szerveren
3.) a kliensen a gui teljesen elválik a programtól (szeretném, ha ugyanaz a kliens majd menne ncurses, GTK esetleg web alapon)
4.) a kliens ne csak linuxon fusson majd

Igaz, ez még nagyon távol van, de az 1-2 pontokkal szerintem nem lesz gond, de a 3-4 pontok megvalósításhoz fogalmam sincs, mit is kellene elolvasnom, megtanulnom?

Fentieket felvázolva jó választás számomra a C?

Az idők folyamán beszerzett irodalom, amiből nekilátnék a C-nek:
1. Unix - GNU/Linux Programozás C nyelven (Pere László)
2. A C programozási nyelv (Brian W. Kernighan, Dennis M. Ritchie) még a régebbi kiadás
3. C programozási feladatok megoldásai, ISBN 963 16 1067 5
4. Programozzunk C-nyelven - Benkő Tiborné, ISBN 9636181985

Azt tudom, hogy én már öreg vagyok és nem is lesz belőlem profi programozó és csak hobbiból űzném a dolgot, de jó fele indulok vagy inkább más nyelvvel kellene ismerkednem?

Előre is köszi!

Bye, Fifi

Hozzászólások

Szerintem nem. Túlzottan alapszintű a felvállalt feladatokhoz. Rengeteg részproblémával kell majd időt töltened.

Java pl. már lényegesen jobb választás, de talán a FreePascal-t is megnézhetnéd (ezt nem ismerem, de jókat hallottam róla).

Nagyon fontos lesz még a jó IDE is, amivel hatékonyan tudsz dolgozni.

Java: Netbeans, Eclipse, jDeveloper.
FreePascal: Lazarus.

Mi gond a vim-mel? Régóta használom nap, mint nap levélírásra, script szerkesztésre, talán forráskód írására is jó lesz ...
Régebben olvastam külömböző eszközökről, mint ctagst, tagline most majd utánnanézek.

Esetleg van valami, ami nagyon a vim ellen szól?

A vim elsőosztályú editor, kiváló syntax highlighting, kiváló behúzás, meg autocompletion is van. Meg lehet belőle hívni külső parancsokat, sőt: mappolni lehet különféle gombokat különféle parancsokra. Pl. beállítom, hogy F8-ra lefordítja a programot, F7-re hívja a debuggert, meg hasonlók. Teljes IDE feeling.

Nem tudom, hogy ki a szárnysegédem (nem tudok ilyenről), de azt láttam az elmúlt napokban, hogy szándékosan provokálsz. Lassan vége lesz. És most nem igazán jöhet a dumád, hogy "de, te vagy az oka", ugyanis az elmúlt napokban szinte nem is voltam jelen az oldalon. Ez volt az utolsó figyelmeztetés.

--
trey @ gépház

Hmm...

Sz'al a C az nem fogja tulzottan az ember kezet. Hogy finom legyek. A Java igen, es vannak nagyon intelligencs IDE-k hozza (JetBrains IDEA - sajna fizetos de en szeretem; Eclipse, Netbeans se rossz). Viszont a Java be van oltva rendesen OOP szemlelettel, picit neha tul elmeleti modon is...

Igazibol amit akarsz, arra a legjobb nyelv valoszinuleg a PHP, ill. ha nagyon akarjuk, a Java Enterprise Edition, mert az fogja a kezed... Egy NetBeans-es Java EE (EJB 3.0 + JSF) mar szep formtervezovel rendelkezik, automatikusan benyalja az adatbazist, csak a kezelofuggvenyeket megirod, osszekattintod a GUI-t a rendszeren, es amin van firefox, azon ez jo.

A Java annyira mar nem veszelyes nyelv az utobbi 1-2 evben, amikor 2005-ben valaki a J2EE-t ajanlotta (EJB 2.1) szivbaj nelkul elkuldtem a francba es most is ugy gondolom, az akkori java tul bonyolult volt meg a valosaghoz kepest is. A mostani rendszer haromnegyedet is nyugodtan ki lehetne dobni es tovabb egyszerusiteni, de talan mar eheto.

A java elve az, hogy alapbol webrol megy, de irhato hozza mobil, desktop kliens is (meg akar szovegesmodu is).

PHP: A PHP elsosorban web, de adatorientalt programokra talaltak ki, es hulyebarat (sajnos tulsagosan is az). A 21. szazadban egy szamlazoprogram se a Microsoft, se a Sun elmelete szerint desktop-only, a web-only-t konnyebben el lehet fogadni.

Igazabol ha belemennel a HTTP rejtelmeibe (tipikusan: AJAX, feedek elmelete, Atom, JSON), akkor tok jol tudnal ncurses meg mas feluleteket irni egy PHP-s progihoz, bar vegulis a PHP-nek is vannak grafikus valtozatai (php-ncurses, php-gtk), amik szakitanak a hagyomanyos webes php-gondolkodasmoddal.

Aztan ott van meg a Ruby On Rails, ami jo kis kezfogo rendszer, bar picit fapados IDE-ileg, mas szempontbol viszont egesz jo. PHP-bol is erdemesebb egy kezfogos keretrendszert hasznalni (cakePHP, Symfony, stb), mint nyersen nekiallni verni a billentyuket.

Sz'al szerintem a sorrend: Java Enterprise NetBeans-szel, Ruby On Rails (egy videot nezz meg rola, ha teccik, vigyed), PHP (ami meg hulyebarat nyelv vegulis, egyszerubb mint a Pascal)

Es komolyan gondolkozz el azon, nem a webfelulet-e az elsodleges. Szerintem az.

Volt már itt arról vita, hogy egy web-es felületű számlázó mennyire (nem) tudja teljesíteni a magyar törvényi előírásokat.

Akkor érdemes web-es felületre fejleszteni, ha mindenképp vágysz arra, hogy megbüntessenek. Az pedig egy másik kérdéses terület, hogy mekkora kín egy web-es ügyviteli szoftver használata egy desktop rendszerhez képest...

Amúgy ha a kolléga a clippert és a pascalt ismeri, én a ccc-t és a Lazarus-t ajánlanám.

Ha valóban OOP-ét akarsz, akkor mindenképpen C++ inkább mint C. Szerintem, ha van a szemlélethez egy kis affinitásod, akkor ez is elsajátítható és legalább meg tudod valósítani amit akarsz.

Az 1-2-4-es pontokat jól teljesíti ebben az esetben a Qt, amiből a 4-es verzióval érdemes mindjárt ismerkedni. Angolul alap C tudással elsajátítható nagyon jó Qt könyvet tudok, akár pdf-ben is megtalálható. Ha megy az angol. Persze majd mások megmondják jól, hogy ne a Qt, de innentől hitvita. Mindenesetre a webes felület a feljebb vázolt problémák miatt szerintem felejtős ilyen projektre.

A 3-as pontot valójában nem teljesen értem. Ha számlázó programot csinálsz, akkor szerintem nem a kliensen válik el a GUI a lényegi résztől, hanem az SQL adatbázis a GUI-tól. Nem látom sok értelmét külön réteget kovácsolni a GUI és az SQL közé, de ez lehet hogy csak azért van mert nem látom át mit akarsz.

sztem nézz utána a python-nak. nem olyan bonyolult mint a java, de nem is annyira "hülyebarát" mint a php. könnyen tanulható, OO, platfomfüggetlen, rengeteg beépített függvényt, osztályt tartalmaz.

,,A C nyelvet minden programozónak ismerni kell'' - valahogy így kezdődnek a programozás könyvek. Mégis, kevesen vannak, akik (relative) első nyelvként tanulják, összetettsége és hardverközelisége miatt. És valószínűleg nem is erre van szükséged. Mint asztali alkalmazás, a Java egy jó választásnak tűnhet, már az alap JDK (Java Development Kit) is elég lehet a céljaidnak (Egységes grafikus felület, az AWT(Swing), adatbázis kezelés (MySQL), kliens-szerver kommunikáció (CORBA)). Ezeket megvalósítani C alatt macerásabb és véleményem szerint jelen helyzetben felesleges is.

Alternatívaként a Python és a Ruby is felmerülhet, modern és tiszta nyelvek, napról napra bővülő felületekkel.

Webes felülethez leginkább a PHP, a CSS, a MySQL és az AJAX (JavaScript) eszközökkel kell találkoznod, itt nem szükséges azz objektum-orientált szemléletmód, az előbiekknél viszont kikerülhetetlen.

C# + mono?
_____
Legyél egyéniség! Ne köve$d a divatot! Használj te is Ubuntut! -- Nem vagyok egyéniség. :)

c rossz irany szerintem is

evekbe telne mire egy szamlazoprogramot osszeraksz c ben attolfelek

python -t vagy ruby -t ajanlanam nyugodt szivvel

en szemely szerint utalom a java-t, de az se rossz valasztas

Ha nem félsz egy kis elmélettől, akkor a java egy jó IDE-vel (tipp: Netbeans; nekem nagyon bejön) elég gyorsan tudsz haladni.

---------
"Ha igazat mondasz azt végig unják, ha feldíszíted azt jól meg dugják"
szerény blogom -- új címen!

Sziasztok!

Mint fent írtam szeretnék egy napjainkban is "versenyképes" nyelvet megismerni csak hobbiból. Munkám - melynek köze sincs a számítástechnikához -, családom (két gyermek) mellett lehet, hogy ez nem is sikerül vagy évekbe fog telni ...

A számlázóprogram írása már csak a jéghegy csúcsa lenne, az is lehet, hogy soha nem kerül rá sor és inkább szolgáltatás nyújtó felhasználók igényeire koncentrálna, nem is tartalmazna raktárkezelést.

Web alapú klienstől felállna a szőr a hátamon. Egy ncurses felületű, egy billentyűvel elérhető funkciók - alá DOS-os számlázók - szerintem hatékonyabbak nagy tömegű számlázáshoz, mint a kattintgatos GUI vagy webbrowser, ezért ezek lennének az utolsók.

Azért gondoltam a C-re, mert linuxot használva idestova 7 éve desktopnak egy-egy, a distribúcióban nem lévő program fordításához jól jött volna néha, ha egy picit értem is a forrást.

Nekem nem kell, hogy gyorsan és látványosan tudjak fejleszteni. Egy profi programozónak biztos fontos egy jó IDE is, nekem kezdetben meg fog felelni a vim.

Viszont sokan írtátok, hogy C-t ne és inkább OOP-t kellene megismernem (főleg ha GUI-t is szeretnék majd). Ha OOP-nek állnék neki, akkor már nem lenne jobb java, php helyett a C++-t választani és egy platformfüggetlen GUI-val megtámogatni http://www.fox-toolkit.org/? Ha már lúd legyen kövér :)
Valahogy még nem sikerül találkoznom gyors java programmal, persze ez nem zárja ki, hogy nincs, csak ahhoz szerintem nagyon jól kell tudni programozni. Szóval java-val szemben vannak - persze tudás hiányában lehet, hogy alaptalan - előítéleteim.

C nem elavult.
OOP nem olyan nagy dolog :)

JAVA mint eszköz önmagában nem idokolná azt a teljesítményt amit tapasztalunk. Kissé felelőtlenek gyakran a kedvelői, és nem mérik fel a tetteik erőforrás igényét, mivel a szemlélet nem erről szól.

Nyugottan használj C++, ha gondolod, lassabban fordul, mint egy C kód és nehezebb debuggolni. Ha C++ esetében, ne használj csak azért is olyan elemeket amik felkinál a rendszer. Csak akkor használd, ha biztos vagy benne, hogy az adott szituációban úgy jobb, de legaláb nem rosszabb, mint, ha csak C -s eszközöket használnád.

Ha szereted a kezedben tudni a gyeplőt, akkor C/C++/Fortran/Ada/Pascal/asm.. megfelelő nyelv.

Inkább javaslom C -t , ha nem akkarsz nagyon elmélyedni mindenféle nyelvi eszközben. A tanulása sem biztos hogy megtérül .

vim meg jó :) Van hozzá mindenféle plugin. ddd jó grafikus debuggolósdira.
GUI hegesztésre Gazpacho, glade egész kényelmes, régebbi glade C kódot generál neked, de betölthetsz xml fileokat is.
C# mono -val tényleg kényelmes GTK+ cuccokat hegeszteni. De server részre C -javaslom leginkább (epoll a haverod).

Rábeszéltetek :)
Körbenézek milyen magyar nyelvű általános OOP, illetve C++ könyvek vannak egy kezdő számára, mely esetleg még linux alatti fejlesztésről is szól és nem valami többszázezer HUF-os windows alatti IDE-vel terjeszti az igét.

Majd jövök linkekkel és lehet osztani az észt, hogy melyik könyvre(ekre) áldozzam forintjaim.

angolul mennyire tudsz? ha 7 eve linuxozol, akkor azert gondolom nem akadaly. en amugy '95ben erettsegiztem, igaz azota folyamatosan IT kozelben vagyok, szoval egyaltalan nem gondolnam, h le lennel maradva. sot talan elony is, h nem kovetted az elmult par ev vadhajtasait es talan vmi puritanizmus maradt benned. ;)

had ajanljam szemelyes kedvencem: http://rebol.com/oneliners.html

- free
- cross platform (win,lin,mac)
- console only (<400k)
- grafikus (<900k)
- self contained
- fuggvenyei jelentos reszenek megtekintheto a forrasa
- online help is benne van ebben a meretben
- mindenfele halozati protokollt tamogat bazi kenyelmesen (nem kell kulon lib hozza)
- egyszeru, megis powerful nyelvi / szoveg ertelmezoje van
- sajat nyelvi dialektusokat lehet eszetlen konnyen kialakitani vele az adott feladathoz illeszkedoen
- a regexpeket ki tudja valtani 1 olvashatobb, beszedesebb - igy ondokumentalobb - leirasi formaval
- shell integracioja is van (azert a bash kifejezoereje nagyobb a pipe-okkal)
- ennek segitsegevel es a szovegertelmezojevel holt primitiven illesztheto hozza barmilyen adatbaziskezelo a parancssori interface-en keresztul
- prototipus alapu OOP-je is van, de nem kotelezo hasznalni
(http://en.wikipedia.org/wiki/Prototype-based_programming)
- cgi-sen, vagy rebolban irt webserver (<20k) segitsegevel nativan is lehet webes interfacet csinalni vele (debugolashoz jol jon, meg ha a vegso felulet nem is ez lesz)

masik dolog amit nem ajanlottak nagyon, pedig konnyu dolgod lenne vele, az az sqlite.org
- crossplatform
- nem szerver architechturaju, hanem file alapu
- karbantartasa, hordozhatosaga 1xubb
- automatikus tipus kezelese van
- olvasasi teljesitmenyre nagyon jo
- eleg komplett az sql nyelve

vegul pedig en azt mondom, h az elsodleges az adatbazis! azt kell jol megcsinalni, az a lelke mindennek. ahhoz pedig pillanatnyilag nem nagyon tudnek mas nyelvet javasolni, mint az SQL.
azt tanuld meg eloszor szerintem.

legvegul pedig en a nyelveket kifejezo erejuk szerint ugy rangsorolnam, mint ahogy idorendben
is kovettek 1mast:
sed < awk < perl < php < python < ruby < lua
szerintem kezd a vege felol inkabb, akkor jobban jarsz. ha nem rebol, akkor ruby + rails framework. fontos a framework. ma is visszasirom azt az idot amikor meg delphiztem. a legszuperebb framework volt! talan ma a javas frameworkok mar a nyomaba ertek, de sebesseg/meret/komplexitas tekinteteben bekaphatjak a faszomat.

Nemcsak linux disztribúciónál, hanem (hobbi) programozási nyelvnél is jó lehet olyat választani, mint amilyen a szomszédnak, havernak van.

A "közösségi tudás" azért egy elég kétélű dolog.
Fizetek neked egy túró rudit, ha tudsz egy olyan programnyelvet említeni, amit eddig nem ajánlottak, mint ideális plaform üzleti szoftver fejlesztéséhez (bár... szerintem legyen LISP!).

Csak hogy én is bemondjam az ultimate bölcsességet, ha hobbyból akar programozni, akkor a legideálisabb nyelv az, amelyikről szóló könyvet először leveszed a polcról. Kezdd el és csináld. Ha nem tetszik, nem haladsz, szenvedsz tőle, válassz másikat. A hobby arról szól, hogy élvezed.
Ha üzleti szoftvert akarsz fejleszteni, akkor azért vannak egyéb mérlegelendő szempontok is. (Azért ha egy tanácsot megfogadsz, assemblyben ne kezdj el számlázóprogramot írni, OMFG...)

Szia!
Ez egy ezerszer lerágott csont. Mindig leszünk sokan, akik másra és másra esküszünk. Így ez a válasz is szinte már közhely. A C-t ismerni sosem gond. Összetetteb feladatokra ma már valóban sokkal efektívebb nyelvek, eszközök állnak rendelkezésre, amik ráadásul specializálódtak is területekre. C-t első nyelvként tatnulni azért jó, mert ha odafigyelsz rá, megértesz szinte minden alapvető dolgot, amik a későbbiekben tanult nyelvekben vagy ugyanúgy jelentkeznek, vagy pont emiatt könyebben érted meg a különbségeket. Pl. hívási konvenciók, változókezelés, stb. Ismét közhely: ezek után a "programozás" valójában az összetett feladat megtervezését, átgondolását, lemodellezését jelenti, majd ezek és a célkörülmények alapján a megfelelő nyelv, eszköz segítségével annak lekódolását.
Az IDE általában az eszközzel jár, és pl. vim-ek is van létjogosultsága. Ha teszem azt egy 20 soros kis valamire van szükséged, nem fogsz semmilyen IDE-t indítgatni, hanem vim, aztán gcc -o valami valami.c. Vagy web-hez: Ott úgyis 100 másik meglévő projektből ollózod össze a 101.-et. Ehez én nem szoktam semmilyen IDE-t használni. vim :r innen-onnan, kicsi átszabás, kicsi php módosítás, stb. Teljesen király syntax hilite-ja és hasonló development feature-je van.

De elsőre szerintem mindenképpen C. Mindig jól jöhet "reszeléshez" :) Világos, hogy nem azzal fogsz a jövőben "termelni", ám mindenhez jó alap és innen folytathatod - lehetőleg minél több nyelvvel -, hogy legyen átfogó rálátásod a lehetőségeidre. A További nyelvek megtanulása kb. egy tutorial végigolvasását jelenti és az első Projektben megszerzett újgyakorlat-tapasztalatokat, mert mint feljebb közhelyeztem: nem a konkrét eszköz az elsődleges szempont egy jó rendszerhez.

Row

A C tanulásának van egy óriási előnye: A bele invásztált
idő nem veszteség.

> Sol omnibus lucet.

Ja erről már igen sok szó volt szerintem tanulj meg vagy 5-6 nyelvet aztán ha bekerülsz egy céghjez majd specializálódsz, mindenhez más és más a jó. Pl én fizikus vagyok, én az életben nem fogok java-t, php-t.... tanulni mert nekem semmire sem jó (mikrokontrollerek, e-epromok-at programozok) én C, és ASM-et használok. Megnézném azt az embert aki egy 1-4k-memóriájú mikrokontrollert akármilyen java-val felprogramoz, ASM-el is igen keményen spórolni kell. De egy programozónak szerintem egy nyelvre ráfeküdni kevés ha web az egy programnyelv csoprt (java,php,html....), hardver az egy másik (asm,C,C++,fortran....),