- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- hcl: Kelj fel komám, ne aludjál
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- GoodSpeed: Samsung 980 PRO 1TB M.2 (MZ-V8P1T0BW) vs Samsung 990 PRO 2TB M.2 (MZ-V9P2T0BW)
- Magga: PLEX: multimédia az egész lakásban
- bambano: Bambanő háza tája
- Elektromos rásegítésű kerékpárok
- Graphics: Hamis SSD-k az online piactereken, hirdetési oldalakon, hogyan szűrd ki?
-
LOGOUT
Új hozzászólás Aktív témák
-
dqdb
nagyúr
válasz
#44001536 #15694 üzenetére
Ha nem tölthetem le az adatok egy részét, akkor mire van egy publikus API, ami pont ezt segíti?
Például azért, hogy botot készíts a saját szerveredre/másoknak vagy integáld a Discordot más szolgáltatásokkal (például support bot, aminek DM-et küldve lehet ticketet nyitni vagy webshop integráció részeként a hírlevél automatikusan posztolásra kerül egy csatornában is). Azaz monitorozhatod/lekérdezheted az üzeneteket, hogy az alapján csinálj valamit, de azért nem kérdezhetsz le, hogy eltárold azt, amit megkaptál.Szerintem a Discord keresője önmagában is egész jó, sok funkciót a PH is átvehetne tőlük.
-
-
I02S3F
addikt
De király! Mondjuk én nem szívesen kombinálnám ezeket. Most kávé, csoki és ginko bilóba megy. Egyelőre elég. Ha nagyon romon vagyok, akkor +1 kávé. Ha valamelyikből elegem van, akkor lecserélem egy időre (és akkor válogatok az általad említett alternatívákból is
Köszönöm!)
-
y@g4n
tag
válasz
I02S3F #15670 üzenetére
Hali! Itt összegyűjöttem pár hasznos cuccot ilyesmire:
https://logout.hu/bejegyzes/y_g4n/agyserkento_eronletjavito_gyogynovenyek.html -
I02S3F
addikt
válasz
seredy #15688 üzenetére
Szerintem a problémamegoldó képességed problémák megoldásával fejlődik.
Humble Bundle-ön szoktak lenni programozós könyvek. 1 dolláért mindjárt 3. Illetve a Packt nak volt régebben minden nap 1 könyve ingyen.
Tapasztalatom szerint ezek a könyvek nem olvasmányosak. Arra jók, hogy olvasás közben nyitva van az IDE és püfölöd be a kód részleteket a könyvből, majd játszadozol vele.
Egyetemi jegyzetek között érdemes még szétnézni programozás terén, mert van elméleti része is a dolognak. A "free computer science books" szavakra rákeresve találsz ilyeneket, de szerintem gyakorlati feladatok abban is vannak!
De javítsatok ki, ha szerintetek hülyeséget írok!
-
seredy
tag
sziasztok, hobbiszinten, önszorgalomból tanulok programozást, Javascriptet, illetve nemrég kezdtem el ismerkedni a Reacttel. Kicsit fura lesz a kérdés: tudnátok ajánlani valamilyen könyvet, amit kezdő programozók haszonnal forgathatnak? Tudom, a lényeg, hogy írjam a kódot, de szeretnék kikapcsolódásként valamit olvasni is, nem tudom, létezik-e valami könyv, ami mondjuk kicsit ki is kapcsol, vagy fejleszti is a problémamegoldó képességeket. Szóval elég tágan értelmezem a dolgot
. Angolul is jöhet bármi. Ha tudtok valami ilyenről, köszönöm, ha ajánlatok valamit.
-
Vtmk
tag
Sziasztok.
Szeretnék egy hatalmas nagy segítséget kérni.
Van egy pici kis oldalam. Benne egy fórumocskával.
Az a gondom, ha pl 15000 karakternél nagyobb hozzászólás küldenek be akkor elszáll az oldal és nem jön be semmi. Pontosabban beküldi az adatbázisba a cuccot,de kiiratásnál elszáll az oldal.
AH01075 időtúllépés hiba ...
sőt azt a karakter mennyiséget is beveszi ami ha spoilerbe rakok akkor nem
azt szeretném darabolja fel külön echora és írja ki mintha egy lenne$message = wordwrap($message, 10000);
ezzel szeretném 10.000 darabokra feldarabolni pl ha 55.000 karakter érkezik be egy hozzászólásba. De viszont a bbcode miatt valahyogy egybe értelmezhetően kéne megjelenítenem,hogy a spoiler bbcode működjön.//[spoiler]Text[/spoiler]
if (stripos($message ,'[spoiler]') !== false){
$ab = 600; // tól
$cd = 700; // ig
$random = rand($cd, $ab);
$message = wordwrap($message, 10000);
$message= preg_replace("/\[spoiler\]\s*((\s|.)+?)\s*\[\/spoiler\]\s*/i",
"<input type=button onClick='hirek($random)' value='Kinyitás-Becsukás' title='Csiki-Csuki'>
<div id='$random' style='display:none'>
<table border='1' cellspacing='0' cellpadding='3'>
<td><font color=#bbd7f3>\\1</font></td></table></div>",$message);
} -
Ispy
nagyúr
válasz
I02S3F #15670 üzenetére
Pro tipp: alvás. Nem olyan épphogy, hanem amivel kipihened magadat. Tapasztalatom, hogy fáradtan sokszor nincsen értelme kódolni, mert egy jó alvás többet ér, mint másnap a hülyeségeket javítani. Mivel ez szellemi munka ezért is nehéz ezt kvázi másodállásban tanulni, csinálni, amikor már inkább az asszonnyal kéne foglalkozni. Persze ha már van kellő rutin, akkor ez a határ kitolódik, aztán ahogy öregszik az ember úgy megint szűkül. Ha már érzed, hogy kampó vagy agyilag, akkor például lehet fejben megtervezni, hogy másnap mit, hogyan fogsz csinálni, de kódolni, főleg húzós részeket inkább csak friss aggyal.
-
disy68
aktív tag
válasz
pmonitor #15675 üzenetére
Oldal alja: Content is available under GNU Free Documentation License 1.2 unless otherwise noted.
Magyarul, igen.
-
pmonitor
aktív tag
1 kérdésem lenne. Az oldalamra/GitHub-ra fel lehet tenni olyan kódot, amely más weboldalról származik? Pl. innen, vagy erről az oldalról, vagy más fórumról?
Nincs jogi következménye? Én magamtól azt mondanám, hogy nyugodtan, de azért megkérdezlek titeket is.
-
I02S3F
addikt
válasz
pmonitor #15669 üzenetére
Sziasztok! Beszéltem dokimmal, hogy a programozás lassan megy. Konkrétan sokat töröm a fejem és ebbe el is fáradok.
Kávé és csokoládé fogyasztását javasolta. Meg ajánlotta, hogy vegyek ginko bilóbát.
Utólag rájöttem, hogy adott keretrendszer szintaxisát nem ismerem. Hiába is törtem volna rajta magam, segítség nélkül nem jövök rá.
Ti mivel serkentitek, frissítitek a gondolkodásotokat?
Szükséges beismernem, hogy nagyon lassan haladok a kódolással (szakdolgozat), de ez az első produktumom is.
-
pmonitor
aktív tag
válasz
sztanozs #15668 üzenetére
Igazából a GitHub-ot Livius ajánlotta. Nekem mind1, hogy olvassák-e, vagy hogy milyen réteg olvasgatja/nézegeti. A publikus kódjaim 1-2 témában feltettem(végülis nem került semmibe).
Ami jobban érdekelne, az a Cutter programom hatékonysága/sorsa. Dehát akkor is tudok aludni, ha nem tudom meg.
-
válasz
pmonitor #15663 üzenetére
Amit keresel azokat úgy hívják, hogy nyelvi csomagok. Általában vannak az adott (magasabb szintű) programozási nyelvekhez 'hivatalos' tárolók, ahol elérhetők ilyen kódtárak (vagy már lefordított függvénykönyvtárak.
Természetesen az esetek nagy részében ezek hatékonyságát és/vagy gyorsaságát senki nem fogja ellenőrizni (legfeljebb a kód tényleges felhasználói). Pythonhoz ilyen pypi, de ilyen a github is nyelvfüggetlenül (vagy a github előtti időkben a sourceforge).Amúgy szerinted ki töltené az értékes (és meg nem fizetett) idejét azzal, hogy más kódjait túrja hibák, optimalizálatlanság, memory leak, vagy csak hanyag implementáció után kutatva? Legfeljebb a "biztonsági kutatók", akik ezen hibákon keresztül, ilyen kódot futtató rendszerekbe juthatnak be (de a hibákat javítani ők sem fogják). De pl az, hogy egy sort vagy permutációs algoritmus nincs jól optimalizálva szerintem még az ő érdeklődési szintjüket se üti meg...
-
kovisoft
őstag
válasz
pmonitor #15666 üzenetére
Mivel angolszász nyelvterületen más a terminológia. Ők - különféle jelzőket ráaggatva - több mindenre használják a permutation elnevezést, mi ezek egy részét szintén permutációnak, más részét (német mintára) variációnak hívjuk.
Ez talán a hivatalos angol elnevezés, de láttam már ezeket másképp is emlegetve:
ismétlés nélküli permutáció = permutations
ismétléses permutáció = permutations with repetitions
ismétlés nélküli variáció = k-permutations
ismétléses variáció = permutations with replacements
ismétlés nélküli kombináció = combinations
ismétléses kombináció = combinations with repetitions -
pmonitor
aktív tag
Azért ez sem semmi!
Az ismétléses permutációnál lehet megtalálni az ismétléses variáció algoritmusát! -
Ispy
nagyúr
válasz
pmonitor #15663 üzenetére
Szerintem azért nincsen, mert a programozók munkája, hogy algoritmusokat írnak...meg fogod találni a neked szükséges eljárásokra a mintákat, részproblémákra a megoldást, de a feladatot neked kell megfogalmazni megtalálni a végeredményhez vezető utat, majd ezt kód formájába önteni. Pont ez az a része a programozásnak, ami izgalamas, ami kihívás, amiért én például szeretem csinálni. Sokszor én is refaktorálom a saját kódomat, először megcsinálom, csúnyán, behegesztve fix értékekkel, minél inkább lényegre törő módon, hogy minél gyorsabban eljussak az elejétől a végéig. Majd ha már így megcsináltam mindent, amire szükségem van, kitörlöm és megcsinálom szépen, kultúrált formában, elnevezésekkel, optimálisan, amennyire tudom. Senki nem fogja megmondani mi az ideális kód, mert mindenkinek más, mindenki másképp gondolkodik, jut el A-ból B-be. Így a net nem megoldások forrása, hanem sokkal inkább egy ötletbazár, ahonnan lehet ihletet meríteni.
-
pmonitor
aktív tag
+1
Szted ebben ki segített nekem? Senki. Úgyhogy nem ijedek meg a feladatoktól én sem. De sokszor jó lenne, ha legalább az alap algoritmusokban(nem ipari titkoknak minősülő algoról beszélek) lenne egy olyan webhely, amiben meg lehetne bízni, hogy ott használható kód(ok) van(nak). És csak azok.
szerk.: az előző postodra írtam.
-
Ispy
nagyúr
válasz
I02S3F #15661 üzenetére
Manapság nagy dívat a programozás, a csapból is az folyik, hogy legyél programozó. Pedig rohadtul nem egyszerű szakma (egyik sem az), sok energiát igényel, folyamatosan pörgetni kell az embernek az agyát hozzá, igen fárasztó dolog. De senkinek se javaslom, hogy egy az egyben másolja a kódot. Másold le, próbáld ki, ha megy, akkor értsd meg mit miért csinál, utána töröld ki az egészet és írd meg a saját eljárásod, a saját stílusodba. Mert csak így lesz a saját kódod, így fognak kialakulni a saját szokásaid, használd a saját elnevezéseidet, a saját formázásod, stb. Az első nagy szívás lesz, meg a harmadik, meg a tizedik, de utána szép lassan egyre könnyebben fogod tudni asszimilálni az új tudást. Ctrl c ctrl v-nek nem sok haszna, azt bárki meg tudja csinálni.
Én amikor főállásban kezdetem, már volt tapasztalatom, gondoltam ez elég is lesz. Ehhez képest az első 1 évben csak pislogtam, mint hal a szatyorban, valamiféle magabiztosság felszedéséhez kellett vagy 2-3 év. Napi 10 óra munkával....szóval az esténként programozgatok dologból szerintem nem lehet ezt magas szinten megtanulni, hiába nyomják a maszlagot mindenhol.
Szóval ha már csinálod, próbáld meg kihozni a maximumot belőle, nem jó ha valaki nem érti 100%-osan mit miért csinál a kódja.
-
I02S3F
addikt
Én most szakdogát írok. A kódolós részénél tartok és nagyon gyengén megy a dolog. Jó, hogy tudok keresni a Stackoverflow-n. De van, hogy arra sem jut erőm, hogy módosítsam picit a kódot (amit onnan másoltam) . Persze én munka mellett tolom.
Most 4 napot itthon vagyok. A mai a 4., de olyan szarul megy, hogy alig haladtam. Az agyam meg folyton jelzi, hogy fáradt, túl van terhelve.
Szóval igen-igen nagy segítség, ha kapok ilyenkor segítséget és persze hálás is vagyok érte nagyon! :)
-
Ispy
nagyúr
válasz
pmonitor #15655 üzenetére
A programozáshoz az egyik legfontosabb skill a problémamegoldás (leánykori nevén gugli). Ezeken a fórumokon felrakott kérdések 99%-a olyan kérdés amilyenekkel egy programozó naponta találkozik 20 darabbal. Igen, kell kutatni, ki kell próbálni, ki kell gondolni, tehát melós sokszor. Sokan pont a meló részét akarják megspórolni. Én most kezdtem nodejs-ezni, kb percenként jöhettem volna ide a bajaimmal, inkább szoptam vele 1 órát, 2 órát, 1 napot, ha kellett.
A kódadás is olyan dolog, hogy aki napi 12 órát dolgozik, annak nem biztos, hogy van kedve mások helyett megoldani dolgokat. Van akinek ehhez van kedve, de ennek semmi köze ahhoz, hogy az illető tud-e kódolni vagy sem. Szóval ebből következtetéseket levonni elégé fail.
-
pmonitor
aktív tag
válasz
Silεncε #15658 üzenetére
Ez is egy aspektus. De fő a konzekvens nézőpont lenne sztem. Pl. a moderátor azt mondta, hogy "én biztos nem adok kész kódot". De érdekes, azért azokat a post-okat nem törölte, akik kész kódot adtak. Annyit csinált, hogy aki kódot adott, azt lepontozta(10-20 pötty). Aki meg esszét írt, őt meg felpontozta(50 pont). Arról nem is beszélve, hogy akinek a "rávezetés" az álláspontja, az hogy fér össze a pontozással? Kié a megoldás és hány pontért? Hogy illik bele ez a régebbi rendszerbe, ahol minden "megoldás 50 pontot ért"? Ez az egész pontozósdi úgy is 1 nagy h......g, ha konzekvens(ek) lenne/lennének a moderátor(ok). Közben meg értékes topic-okat törölgetnek.
-
Silεncε
őstag
válasz
pmonitor #15655 üzenetére
Az, hogy nem azzal kódot ad valaki, szerintem nem probléma. Néha eltévedek az említett portálra és beleolvasgatok a kérdésekbe. Egy nagyon nagy része a topikoknak gyakorlatilag házifeladat megoldás, a lusta infós egyetemistáknak. Pont ilyenkor jó, ha nem egyből a megoldást írják le, hanem megpróbálják rávezetni a delikvenst. Hátha szándékozik némi munkát is beletenni, nem csak nulla munkával várja az eredményt
tomko9710: én amikor hasonlót csináltam, a beautifulsoup nevű Python package-et használtam hozzá ([link]).
-
pmonitor
aktív tag
válasz
sztanozs #15629 üzenetére
>Alapvetően ez nem egy programozási fórum, vsz nem fogsz találni túl sok fórumozót, akit ez különösképp megmozgatná
Igazad van. De azért úgy néz ki, hogy olvassák(nem tudom, csak gondolom). Abból gondolom, hogy azért a google az első oldalon hozza az oldalam az "1D vágás" kulcsszóra(ezúton is szeretném megköszönni azoknak, akik meglátogatták az oldalam). Igaz, nem csak ezen a fórumon vagyok, de azért a legaktívabb itt vagyok.
Mondjuk azt látom, hogy itt a rendszeres válaszadók nagyon nagy többségét nem érdekli a konkrét problémák kóddal, vagy legalább pszeudokóddal való megoldása). Ez nem feltétlenül baj. Ráadásul azért van kivétel is. Egyébként az "ország legnagyobb fejlesztői portál"-jának nevezett fórumon sem volt szokásban a kód/algoritmus adása a rendszeres válaszadók között. Én kivétel voltam. Amire tudtam válaszolni, arra válaszoltam. Csak a moderátor ott is a "rizsázást" tartotta "a priori"-nak. Mondjuk részben meg lehet érteni olyan helyen, mint ez a fórum, ahol alapvetően nem a programozás a fő irányvonal. De sajnos ott is csak ez megy. Mondjuk abból a szempontból meg lehet érteni, hogy ha valaki viszonylag hosszabb kódot ad, akkor egyrészt abból ki lehet venni, hogy valóban van-e köze a programozáshoz(tehát gyakorló programozó-e). Lásd joysefke-t, aki viszonylag rövid idő alatt összeállított 1 kódot, OOP elven. Másrészt viszont az is kijön, ha valakinek lövése sincs az egészhez. Ezért nem adnak kódot/pszeudokódot, még ha tudják is a választ. Meg amúgy is könnyebb a rizsázás. De ez a felfogás szerintem nem lenne megengedhető egy magát fejlesztői oldalnak tituláló oldalon. Itt még azért jobban elfogadható.
Ugyanakkor nem tagadom, hogy az esetleges olvasók miatt linkeltem be az oldalam ide többször is. De gondolom ez nem bűncselemény.A fórumozásnak van rossz és jó oldala is.
-
Erre vannak a verziókezelő rendszerek (ezekből manapság a git az, amit szinte mindenki használ).
Némileg leegyszerűsítve ez arra való, hogy a file-ok különböző változatait eltárolja, látszódjon, hogy melyik módosítást mihez kapcsolódóan csináltad, melyik fileverziók tartoznak egy kiadott verzióhoz meg sok egyebet is tudnak, de azt majd menet közben úgyis megérted. -
tomko9710
kezdő
Sziasztok!
Tudom nemszoktam ide írni, de nemtudok már kihez fordulni. Remélem ti tudtok nekem segíteni.
Azt szeretném megcsinálni linux vps szerveremen, hogy egy weboldalról ahová fel van töltve egy film (pl:clipwat....) annak automatikusan letöltse a direct linkjét.
Lehet, hogy nem megoldható vagy csak én nem jövök rá hogyan kell, de remélem tudtok nekem ebben segíteni.
A legjobb lenne az ha naponta le tudná szedni a linket és azt el mentené egy "strm" fájlba vagy "txt"-be. Esetleg van erre valamilyen parancs az automatikát azt megtudnám szerintem oldani. -
cigam
titán
A verziókezelést hogyan célszerű megoldani? Pl. készítek egy programot ami már működik, legyen ez az 1.0. Javítok pár hibát, ami menet közben előjött, legyen 1.1. Aztán kitalálom hogy még valami plusz funkciót is tudhatna, lett egy 1.2.
Amikor nekiálok az 1.1-nek, akkor nyitok egy új projektet aminek a nevében már 1.1 szerepel, és beimportálom a régi kódot? A VS community kiadásában van erre valami beépített megoldás? Hogyan csinálják a "nagyok"? -
Livius
őstag
válasz
pmonitor #15639 üzenetére
Igazából mindegy milyen nyelven publikálsz a GitHub-on. A lényeg hogy a GitHubon legyen fent, mert a Google és minden kereső a legjobb találatokat onnan hozza. Tehát ha valaki magyar nyelven keres valami olyat, amiről te csináltál ott valami repot és szép dokumentációt, akkor azt eléggé az első találatokban hozza majd elő, és innentől kezdve igen hasznos lehet az amit oda felraksz. Nyilván ha angol leírásokat írsz, azt világszinten még többen betalálnák a Google-vel. Amúgy minden mappádba rakhatsz egy Readme.md text fájlt, amiben a markdown syntaxissal csinálhatsz elég jó féle dokumentációkat és leírásokat. Ezek a legfontosabbak, hogy valaha valaki rád találjon a neten. Példa: [link]
-
pmonitor
aktív tag
Itt találtam a következő algoritmust(átírtam C-be):
void GenArrangement(int n, int k, int idx, int used, int arran) {
if (idx == k) {
printf("%d\n", arran);
return;
}
int i;
for (i = 0; i < n; i++)
if (0 == (used & (1 << i)))
GenArrangement(n, k, idx + 1, used | (1 << i), arran * 10 + (i + 1));
}Ez sokkal gyorsabb, mint az én algoritmusom. Kár, hogy csak nagyon korlátozottan működik. De azért érdekességnek jó.
-
Weareus
addikt
Köszi mindenkinek, és mennyivel jobb már így!
-
Weareus
addikt
Üdv.
Wordpad (esetleg Wordpad++)-ban van olyan string, metódus v. bármi, amivel egy billentyű lenyomásával tudok egész sort törölni? (Mondjuk pont azt, ahol épp a kurzor van)?Lehetőleg úgy lenne a jó, ha magát az üres sort sem hagyná meg utána...
-
pmonitor
aktív tag
válasz
Livius #15638 üzenetére
Próbálgatom szárnyaimat. Az a baj, hogy angolul az írott szöveg lényegét megértem, de önálló mondatot nem tudok összerakni. Meg a szavak szinonimái is 1 kicsit gondot okoznak. Úgyhogy marad a kevert angol/magyar. De pl. a QuickSort-ot meghagytam angolul.
-
Livius
őstag
válasz
pmonitor #15628 üzenetére
Már régebben írtam neked hogy erre van a GitHub meg a többi ilyen nyílt repo kezelős közösségi oldal. Ha az utókornak és másoknak akarsz hasznosat alkotni, akkor oda kell felrakni a kódokat, lehetőleg angol leírásokkal. A jelenlegi privát weboldalad az internet süllyesztőjében elvész, nem sokra jó.
-
axioma
veterán
válasz
fatal` #15634 üzenetére
Lehet hogy csak az eloadas volt a gyakorlat anyagahoz is igazitva. De mindegy is, az eredeti felveteseddel egyetertek nyilvan.
Esetleg az is felmerulhet, hogy a buborek - ha kezdoknel maradunk - azt is megmutatja, ohgy mashogy egyszerubb az algoritmusnak mint neked kezzel. Pont azert amiert a beszuro megy amikor felszeded a kezedben levo paklikat, mert tkp az egeszet latod egyszerre, van egy kep a fejedben a megoszlasrol is (nagyok vannak a kezemben, a kicsi a bal szelen kell nezni hogy pont hova) stb., de ilyenekkel nem tud az algo mit kezdeni, egyesevel nezve meg ez a helycseres latvanyosabb. Ha meg eleve nem k-1-ig megy hanem "amig van csere" akkor meg vegkepp szemleletformalo.
(Pl. itt egy mesterseges pelda, ki csinalna' konstruktivan, ki valami egyszerubb kerulouton? [link] Mindketto 10 sor alatti pythonban, beleertve esetekre ciklus, beolv, kiir, minden, de tok jol mutatja hogy mennyire allt at a gondolkodas.) -
fatal`
titán
válasz
axioma #15633 üzenetére
Ha készen / kóddal közelítesz, akkor ez jogos, ezzel szemben én elméleti oktatásnál találkoztam vele először és nem a legérthetőbb elmélet, szerintem - mert a való életben senki nem rendez így.
De ez csak egy példa volt a sok közül, ami hirtelen eszembejutott. Gyakorlati példán keresztül, valóban nem biztos, hogy rossz, annak ellenére, hogy senki nem használja.
-
axioma
veterán
válasz
fatal` #15632 üzenetére
Szerintem a buborek amit a legkonnyebb nem elrontani, mert csak ket ciklus logikus hatarokkal (es me'g akkor sincs gond ha n-szer vegigmegy az egeszen). Minden masnal +-1 konnyen elirhato. Raadasul ha "majdnem" rendezett akkor a kevesebb csere, debug eseten jobban atlathato. A beszurassal operaloknal az algo latvanyos resze mogotti masodik lepes (odebbtolni a maradekot) ami problemat okozhat (amelyik nyelvben meg split/join megoldod, ott meg annal is lassabb lesz mintha fix helyen atpakolgatnal). Oktatasra ezert a buborek mint kalyha nem rossz szerintem.
Ha valaki nem ismerne', tancos valtozatok: [link] -
fatal`
titán
válasz
pmonitor #15628 üzenetére
Ezek adott esetben ipari titkok (persze nem az általános algoritmusokra gondolok itt), szóval nem csoda.
Sok esetben pedig a gyorsaságnál sokkal fontosabb, hogy másoknak is olvasható maradjon a kód.
Az egyetemi jegyzetben egyszerűbb algok vannak, amiket könnyebb megérteni (vagy legalábbis ez a célja, nem mindig sikerül).
Egyszerű példaként sosem voltam képes megérteni, hogy miért a buborékrendezést tanítják elsőnek, ami lassú is és szerintem abszolút nem egy logikus megközelítés. Teljesen kezdőknek egy maxker/minker rendezés sokkal logikusabb (és gyorsabb is, persze nem a leghatékonyabb), mert szerintem sokkal közelebb áll ahhoz, ahogy az életben is rendez az ember.
-
Marky18
aktív tag
válasz
sztanozs #15629 üzenetére
egyetemi jegyzet vs optimalizált kód.
Szerintem a legfontosabb az, hogy ellassa a kod a feladatat. Hiaba irod meg a leheto legoptimalisabb low-level eljarast egy adott problemara, ha az egesz feladat 1%-at oldottad meg a rendelkezesre allo ido nagy resze alatt, illetve hiaba irnak brutalgyors peldakat az egyetemi jegyzetben, ha egy tapasztalt fejlesztonek is orakba telik kibogozni, hogy mi tortenik. Az OOP valahol ennek menten jott letre, hogy olvashato, ujrahasznalhato kodot irjunk es ne csak egy szakallas szaki tudja, hogy mukodik az adott kodreszlet.Azt sem szabad elfelejteni, hogy a low-level problemak nagy resze mar meg lett oldva evtizedekkel ezelott, nekunk csak hasznalni kell a megirt kodokat, hogy user kozeli problemakat oldjunk meg veluk. Hardverkozeli kodot C-ben is ASM-ben irnak, webalkalmazast pedig C#-ban, Javaban, mert nem akarunk az OSI modellben turkalni, hogy egy GET requestet lefuttassunk. Mas retegbeli problema, mas retegbeli eszkozoket kivan.
-
pmonitor
aktív tag
válasz
sztanozs #15629 üzenetére
Ez a kód:
static void Teszt_5(char[] arr)
{
char[] arr2 = (char[])arr.Clone();
int size = arr.Length;
QuickSort(arr2, 0, size - 1);
//Array.Sort(arr2);
int n = arr2.Length;
int i, j;
char temp;
//for (i = 0; i < n; ++i) arr2[i] = i + 1;
while (true)
{
// kiirjuk az aktualis permutaciot
/*for (i = 0; i < n; ++i) Console.Write("{0} ", arr2[i]);
Console.WriteLine("");*/
// megkeressuk, hol kezdodik az utolso monoton csokkeno reszsorozat
for (i = n - 2; i >= 0 && arr2[i] >= arr2[i + 1]; --i) ;
// ha a teljes sorozat monoton csokkeno, akkor vegeztunk
if (i < 0) break;
// a csokkeno reszsorozat elotti elemet ki kell cserelnunk a reszsorozatban nagysag szerint rakovetkezovel
for (j = n - 1; arr2[j] <= arr2[i]; --j) ;
temp = arr2[i]; arr2[i] = arr2[j]; arr2[j] = temp;
// tovabbra is monoton csokkeno a reszsorozatunk, forditsuk meg, hogy monoton novekedo legyen
for (j = i + 1; j < n + i - j; ++j)
{
temp = arr2[j]; arr2[j] = arr2[n + i - j]; arr2[n + i - j] = temp;
}
}
}Ennek a kódnak:
static void IsmPermutacio(char[] tomb2, int[] N, int n, int[] W1, int s, int i)
{
int[] V = new int[n];
int[] W = new int[n];
CopyMemory(W, W1, (uint)(n * intSize));
//Array.Copy(W1, W, n);
if (i == 0)
{
for (int l = 0; l < s; ++l) W[l] = -1;
}
if (s != 0)
{
bool ind = true;
do
{
Kombinacio(V, s, N[i], ref ind);
if (!ind)
{
Betesz(N[i], n, V, W, i);
IsmPermutacio(tomb2, N, n, W, s - N[i], i + 1);
Kivesz(W, n, i);
}
} while (!ind);
}
else
{
Betesz(N[i], n, V, W, i);
//*****************************************************
/*for (int q = 0; q < n; ++q) Console.Write(tomb2[W[q]]);
Console.WriteLine("");*/
//*****************************************************
for (int l = 0; l < n; ++l) W[l] = -1;
}
}
static void Kombinacio(int[] V, int n, int k, ref bool ind)
{
if (ind)
{
for (int i = 0; i < k; ++i) V[i] = i;
ind = false;
return;
}
for (int i = k - 1; i > -1; --i)
{
if (V[i] < n - k + i)
{
++V[i];
for (int j = i + 1; j < k; ++j) V[j] = V[j - 1] + 1;
return;
}
}
ind = true;
}
static void Betesz(int ni, int n, int[] V, int[] W, int i)
{
int j = -1, l = 0;
for (int p = 0; p < ni; ++p)
{
while (l < n)
{
if (W[l] == -1) ++j;
if (j == V[p])
{
W[l] = i;
break;
}
++l;
}
}
}
static void Kivesz(int[] W, int n, int i)
{
for (int l = 0; l < n; ++l) if (W[l] == i) W[l] = -1;
}Nem az optimalizálása, hanem teljesen más(egyszerűbb) algoritmus.
És sztem az első algoritmus érthetőbb is.
-
válasz
pmonitor #15626 üzenetére
Amúgy visszatérve az eredeti felvetére - egyetemi jegyzet vs optimalizált kód.
Legtöbbször az egyetemi jegyzetben levő kód az optimalizáció rosszabbik végén van (nem pedig középtájon), hogy a hallgatók jobban megértsék a kód működését és képesek legyenek elsajátítani az alapvető programozási technikákat.
Hacsak nem optimalzációs techikákról szól az adott tantárgy/témakör, szvsz nem fogsz találni még közepesen optimalizált kódot se.
#15628 - szerintem a StackOverflow-n van több olyan bejegyzés is, ami az adott eljárás optimalizációját tárgyalják ki.
Alapvetően ez nem egy programozási fórum, vsz nem fogsz találni túl sok fórumozót, akit ez különösképp megmozgatná (ráadásul úgy, hogy nyelvfüggetlen / nyelvek közötti optimalizációt szeretnél kibeszélni). Egyébként semmi nem akadályoz meg abban, hogy Logouton indíts erről egy sorozatot, és ha lesz rá kereslet a hozzájuk tartozó fórumtémák is aktívak lesznek... -
martonx
veterán
válasz
sztanozs #15624 üzenetére
No igen, csak néha már úgy érzem ódákat írok (és talán mintha feleslegesen tenném), és nem akartam minden apró részletbe belemenni. Köszi a kiegészítést!
Plusz, amit egyikünk sem hangsúlyozott ki, az még a HATÁRIDŐ. Attól kezdve, hogy a szerződés megköttetett, egy programozónak határidőre el kell készülnie, nem pedig a kódot hobbiból csiszolgatnia a végletekig, akár a határidő többszörösével megcsúszva, mert így lett tuti a legszebb, leggyorsabb a kód.
-
pmonitor
aktív tag
Kivettem a konkrét nick megnevezéseket az oldalamról. Azzal tényleg nem vagyok előrébb, ha konkrét, de mégis "névtelen" nick-eket emlegetek az oldalamon.
-
válasz
pmonitor #15620 üzenetére
Most az 5 másodpercet így képzeld el:
- indul egy request magyarországon, ami átmászik még 5 microservicen
- az egyik kilő az usába és csak oda vissza kb. 500 ms tart az adat utazása (tegyük fel, hogy megkerüli a földet kb. fénysebeséggel)
- majd a végén még utófeldolgozás következikA való életben az 5 mp, vagy 3 vagy 10 mindig egy olyan meghatározott érték amit a user úgymond "kibír" stressz nélkül. Igen erről vannak kutatások. Nyilván célszerű a lehető leggyorsabb megoldásra törekedni.
A miért C#, Java, Python és nem C vagy ASM kérdésre a válasz pedig egyszerű. Az idő pénz és a felesleges implementációt megúszod. Nem neked kell a sokmindent is leimplementálnod.
Nem véletlenül van Spring és VM is pl.
-
válasz
martonx #15623 üzenetére
És jönne az a kérdés, hogy fejlesztő csapat az elején miért nem 100+-os felhasználói bázisra írta meg? Mert valószínűleg volt egy árajánlat
- egy 20+ felhasználói csoportra egyszerű kódbázissal, ami X idő alatt lékszül Y forintból és N darab gép kell alá;
- és egy 100+ useres robosztusabb, elosztott változat, ami 1.5X idő alatt készül el, 2Y pénzbe kerül és N+5 darab gép kell alá.
Ebből nagy valószínűséggel az ügyfél az olcsóbb és gyorsabban elkészülő és könnyebben üzemeltethető megoldást választja - amennyiben az számára elegendő - az esetek 99.99%-ban. -
martonx
veterán
válasz
pmonitor #15620 üzenetére
Egy dolgot felett siklasz el. Te most a saját szórakozásodra programozol pár jópofa ciklust, és ezzel szórakozol, hogy hogyan lehet hatékonyabbá tenni, akár nyelv váltás árán is. Abba ne hagyd, ez egy nagyon hasznos hobbi!
DE ezzel szemben a rideg valóság az, hogy egyrészt a programmal szembeni követelményeket szinte SOHA nem a programozók határozzák meg. Ha az ügyfél már attól is boldog, ha az eddigi 20 másodperces futásideje 5 másodperc lesz, akkor ezt fogja beleírni a követelményei közé. Mert elképzelni sem tudja (hidd el, sokszor a programozók se látják előre a jövőt), hogy amit szeretne az 40ms alatt is megoldható.
A hardvert pedig azért kell fejleszteni, mert képzeld el a következő szitut (direkt kicsit kisarkítva):
Jón egy ügyfél, hogy kellene neki egy program, amit jelenleg 20 párhuzamos user használ, legyen gyors meg minden. Elkezd a csapat kódolni, menet közben jönnek változtatási igények, előjönnek csúszások, néhol kompromisszumos megoldásokkal kell élni stb...
Végül elkészül a kód, mindenki kipróbálja, zokszó nélkül viszi a 20 párhuzamos usert, szép, gyors, határidőre kész lett, mindenki happy.Igen, ám, de mi van akkor, ha visszajön az ügyfél, hogy nyitott még 4 másik telephelyet, ebből kettő már külföldön van, és hát a rendszer lassulgat igaz, hogy már 100 párhuzamos user van rajta. És ekkor az ügyfél választhat, beletol plusz X processzormagot Y összegért a rendszerbe, vagy elkezdi újra íratni a programját, ekkor már 100 párhuzamos userre méretezve mondjuk 5Y összegért (és ez az újraírás el fog tartani mondjuk 2 évig, miközben Y összegért azért a plusz hw erőforrást is bele kell tolnia, mert a rendszernek addig is mennie kell). Szerinted melyik opciót választja az ügyfél? Elárulom: roppant ritka az az ügyfél, aki a másodikat választja, ő is inkább csak azért, mert hardveresen már közelít a falhoz, ahonnan már nincs tovább.
És ekkor te, mint ügyfél, ott állsz az 300-adik párhuzamos user ügyfelessel szemben, és nem érted, hogy miért lett olyan szarul megírva a program, hogy várnia kell az ügyintézőnek, mire valamire reagál a rendszer. És hogy lehetnek ezek a magukat programozóknak mondó kóklerek ennyire faszok, hogy egy ilyen szart tettek le az asztalra. -
pmonitor
aktív tag
válasz
martonx #15619 üzenetére
Ismerem a C# működését, hiszen abban kódolok legtöbbet. C-t meg általában akkor, ha valamihez natív dll kell, vagy ha kedvem tartja. Asm-ben meg még ritkábban. Továbbá nem tudnak eladni VB6/VBA/VB.NET-ben, javascriptben php-ben, pascalban sem, bár ezek azért már akadozva mennek.
Hogy sok aspektusa van egy nyelv megítélésének, azt elhiszem. Sajnos a programozók(vagy akik annak állítják be magukat. mert a tény az, hogy 2 nick bizonyitotta be nekem, hogy tud programozni) ezek közül soknak tényleg lényegtelen szempont. Csak a gond ott van, hogy én nem vagyok programozó(és nem is mondom magam annak). Akkor vajon miért is kell a hardvert fejleszteni, ha a sebesség lényegtelen? Valaki írta, hogy a user 2 mp-et vár a gépre vagy 10-et, az nem igazán szempont. Ezzel sem igazán tudok egyetérteni annak ellenére, hogy tudom, hogy nem leszek népszerű. Sztem egy programnak 2 jellemzője van(legalábbis ha pénzt kérnek érte): az egyik, hogy jól működjön. A másik, hogy ezt minél gyorsabban tegye. Amikor a bankban az ügyintéző azt mondja, hogy a gépre várunk, majd kb. fél perc múlva lépünk tovább(addig csak nézzük egymást), annak nem igazán szoktam örülni. De akkor kérdezek egyet. Ha nem igazán szempont a sebesség, akkor miért is az nálatok a mondás, "hogy 5 másodperc alatt kell kiszolgálni egy HTTP requestet" Akkor miért kell egyáltalán bármilyen időkorlátot is felállítani, ha a sebesség nem igazán szempont? Az meg egy másik szempont, hogy aki az 5 sec-t meghatározta, ő sem volt a helyzet magaslatán, ha könnyedén a törtrésze alatt meg lehetett oldani(1 szakinak azért pontosabban be kellene lőnie a teljesíthető időt). Soha nem tudom megérteni a programozókat. Én nem közétek tartozom. Főleg úgy, hogy tudom, hogy nagyon sok mindent gyorsabban meg lehetne oldani. De természetesen itt a fizetős alkalmazásokra gondolok. Bár a free-nek is illene ezeket betartani. Pl. most én tudom, hogy lehet gyorsítani a programom kódján. Ezt meg is teszem majd attól függetlenül, hogy free a programom. Hosszú időn át nem tudom elképzelni, hogy a lassabb változat lenne fent annak tudatában, hogy van gyorsabb kód is. Amikor lesz időm, akkor módosítom. -
martonx
veterán
válasz
pmonitor #15613 üzenetére
"És szerintetek a webalkalmazás miben íródott/íródik? Ha jól tudom C++-ban." - nem állítom, hogy pl. a C# egyik komponensének sincs köze a C/C++-hoz, de a C# konkrétan úgy működik, hogy megírod a kódodat C# nyelven, amiből a compiler (na, ez a compiler éppen simán lehet, hogy C/C++, de lehet, hogy Rust vagy tudja isten, lusta vagyok github-on kikeresni a Roslyn forráskódját) készít egy köztes nyelven lévő általános kódot (Intermediate Language), és futásidőben (pontosabban első futáskor) ebből készít a JIT egy arra a hw architektúrára optimalizált assembly kódot.
Bővebben: [link]
A C# nagyon sokáig windows only nyelv volt, de ez 2017 óta már nem így van. Így 2021-ben ideje lenne elfelejteni ezeket a rég berögzült paradigmákat (rakás C# rendszerünk fut Linuxon jelenleg is). Java, Javascript, PHP, Go, Python, stb. nyelvek meg soha nem is voltak windows only-k.
A konkrét példám éppen C#-os volt, ezzel nem egy C# vs. más nyelv flame-et akartam kelteni, hanem az mellett érvelni, hogy mennyi aspektusa van annak, hogy egy nyelvre azt mondjuk, hogy jó vagy csak játékszer, és ezek között a nyelv sebessége csak egy (sokszor tök lényegtelen) szempont a kismillió közül.
De látom, te most éppen a C/C++-ba beleszeretőbe vagy, amivel semmi baj nincs, én meggyőzni se akarlak semmiről. A C/C++ is teljesen jó nyelv bizonyos programozási feladatokra. Sőt minden nyelvben meg lehet oldani minden problémát, más kérdés, hogy egyes problémákat egyes nyelvekkel jóval egyszerűbben, gyorsabban meg lehet oldani, más nyelvekkel meg csak nyögvenyelősen.Ahonnan ez az egész thread elindult, hogy a C-ben lévő kódod vs. a C# kódod között futásidőben mértél némi eltérést (50% semmiképp sem drasztikus, majd ha a C-s kódod tizedannyi idő alatt lefut, akkor arra én is azt mondom, hogy na az már sebességkülönbség - és ezzel meg is válaszoltam egy korábbi kérdésed). És ezen eltérés alapján nagy hévvel kijelentetted, hogy a C# (de ide bármelyik nyelvet érthetnénk a kontextusod alapján) csak egy játékszer a C-hez képest. Miközben ez nem igaz, sőt butaság.
-
Livius
őstag
válasz
pmonitor #15613 üzenetére
Ezért mondom hogy menj el dolgozni, mert látszik hogy nem látod mi a helyzet a jelenlegi technológiákban! C-ben az programozgat aki Linux-ban HW közeli dolgokat csinál, aki ott userspace dolgokat csinál az is már jobban jár a C++-val Linuxon. Vagy C-ben az programozgat, aki mikrokontrollereket használ. Ha nagyon fontos a sebesség desktop gépen, akkor C++ kell, vagy pl Windows 10 driver C++-ban ajánlott, ha még GUI is kell akkor vagy lehet maradni a C++-nál, vagy tovább kell lépni C#-ra (ma már mindenhez kell GUI, konzol alkalmazás nem eladható). A scriptnyelvek pedig gyors kipróbálásokra jók, vagy épp valami webes háttér feladatokra, amik ilyen mappákból másolgatunk ezt azt ide-oda, meg szöveges dolgokban keresünk pl. Ez a mostani trend, fogadd el. Ha a C a mindened, akkor kezdj el nézelődni a Linux kernel programozás terén, vagy mikrokontroller programozás terén, ott tényleg számít minden ms, ez való neked.
És egy C csapat igen is lassú, amint követelménybe kapja hogy legyen GUI, webes interface meg ilyesmi, már +1 év fejlesztés.
Előre megírt dolgok meg nehogy azt hidd hogy nagyon vannak, max a régi dolgokat copy-pastje van általában, de ez is kis mértékben.
-
martonx
veterán
A probléma nem elsősorban a PHP volt. Nyilván PHP - vél is simán le lehetett volna menni 5s alá, ha nem is 40-80ms-re.
Én mindenféle script nyelvet szeretek. Tök gyorsan össze lehet bennük dobni egyszerűbb cuccokat.
Viszont az az általános tapasztalatom, hogy sok script junkie nem véletlenül marad a script nyelveknél, hanem a képességeik a gyorsan összedobjunk valamit, valami egyszerű nyelven szinten meg is áll.
Ez nem a script nyelvek hibája, és vannak persze kivételek. -
Silεncε
őstag
válasz
pmonitor #15613 üzenetére
És szerintetek a webalkalmazás miben íródott/íródik? Ha jól tudom C++-ban
Én itt érteni vélem, mire gondolsz, de akkor ennyi erővel mondhatjuk, hogy minden alkalmazás, ami oprendszer felett fut, C program és készen vagyunk.
(pl. a C# mehet a levesbe linux esetén) Bár ha jól tudom, arra is van C#, de az aztán korántsem olyan elterjedt.
A .Net Core (illetve mostmár csak simán .Net) igen elterjedt cucc, sokan használják productionben is
-
pmonitor
aktív tag
válasz
martonx #15606 üzenetére
Nagyrészt igazakat írsz. De pl. 1 C csapat sem biztos, hogy olyan lassú, mint ahogy azt írod. Ha én csinálnám C-ben, akkor biztos.
De azt is figyelembe kell venni, hogy a C-seknek is van egy csomó előre megírt kódjuk. Hogy mást ne mondjak, itt van kovisoft esete. Ő sem most írta meg a kódját, hanem a tarsolyában volt. Tehát a C-sek sem nulláról írnának meg minden kódot. Szóval lehet, hogy mégsem lenne annyival hosszabb idő a fejlesztés. És szerintetek a webalkalmazás miben íródott/íródik? Ha jól tudom C++-ban. De javítsatok ki, ha tévedek. De mindenképp kap legalább egy réteget fölé. Sztem ez lassítja le ezeket.
Azért egy linux/windows váltás, vagy 32/64 bites áttérés bármelyik nyelvet "megvisel"(pl. a C# mehet a levesbe linux esetén) Bár ha jól tudom, arra is van C#, de az aztán korántsem olyan elterjedt. -
Ispy
nagyúr
Nekem nem volt vele bajom, igaz csak faék használtam 1 hónapig, de végül a serverless miatt elmentük js-re, meg akkor már az androidon is flutter, most meg már szólt a főnököm, hogy megyünk web vonalra erősen, ott meg react. C-ről nem volt szó.
Nagyon izgi, amikor az ember párhuzamosan programozik SQL-ben, JS-ben, VB.NET-ben, backend, frontend, majd most jön a react, a mobilt szerencsére nem nekem kell csinálni.
Laravell az nekünk nem jött be, pedig azzal is küzdöttünk.
-
Ispy
nagyúr
válasz
martonx #15606 üzenetére
Persze lehet írni fosch kódokat, amik nagyon szarok, de azért manapság már inkább a hw az ami a szűk keresztmetszet, de olcsóbb ízomból áttolni a kódokat a vason, mint c-ben nekiállni fejleszteni.
A c ha jól tudom eléggé hw közeli nyelv, szóval szerintem inkább ott használják, ahol az oprendszer alatt kell dolgozni, a többiek meg bedurrantják a keretrendszert, azt majd a többit intézi az operációs rendszer, ami így nyilván lassabb lesz.
Igaz pont most van egy régi ügyfelünk, havi milliárdos bevétellel, aztán amikor a kimutatás 30 percig futott felvetettem, hogy milenne, ha 2021-ben a szerverükön (amin fut a raktártól kezdve minden szar) kicserélnék a HDD-t SSD-re, meg nem futtnának backupk a háttérben meg mittudomén mik, hát nem mert drága. Jó, hát akkor 30 perc.
-
PHP szerintem egy teljesen jó nyelv csak sokan nem értenek hozzá. Mi volt régen? Nem tudsz programozni és elmentél webfejlesztőnek.
Csak nézzünk megy egy Laravel keretrendszert... Szerintem a kolléga által felvázolt probléma forrása nem a PHP volt hanem a hozzá nem értés.
-
martonx
veterán
válasz
pmonitor #15603 üzenetére
Nem off topik ez. Csak egyszerűen nem kell butaságokat írni. Annak, hogy egy programnyelv jó-e vagy rossz, egy csomó szempontja lehet, nem csak a futásidőben nyújtott teljesítmény. Hiszen, ha így lenne, akkor nem lenne feljövőben a Python, a PHP már vagy egy évtizede ki kellett volna, hogy haljon, a javascriptről nem is beszélve
Ugyanakkor nyilván azt se lehet kijelenteni, hogy nem számít a futásidejű teljesítmény, mert igenis van sok olyan eset, amikor meg erre kell kihegyezni valamit. De ekkor is több mindent figyelembe kell venni. Pl. van-e értelme natív nyelvben újraírni valamit, csak azért, hogy pár százalék gyorsulást hozzon a konyhára? Vagy inkább egyszerűbb egy szerver alá betolni plusz két processzormagot, és a fejlesztők meg a hónapokig / évekig tartó újraírás (nem is beszélve egy új nyelv megtanulásáról) helyett inkább olyan új feature-ökön dolgozhatnának, amikkel megtöbbszörözik a cég bevételeit?
Vagy említetted, hogy pl. elég csak a teljesítmény kritikus részeket megírni natív kódban, és azokat dll-ként behivatkozni. Ekkor vajon mennyire fog jól működni a közös logolás, monitoring? Mennyire lesz fájdalmas CI/CD rendszert több repository-ból kiindulva felépíteni, és egy sikeres build/deploy/testing fázist végig verni az X féle nyelven készült komponensken? Mekkora szopás van ebben az esetben, ha akár csak egy szerver frissítéskor eltörik valamelyik ilyen "külső" komponens? Netán linuxról windowsra váltanak vagy vissza? Vagy csak 32-ről 64 bitre? És máris cseszhetik a dll komponensüket. Ráadásul mi van, ha az a kolléga már nincs is a cégnél, aki ezt anno készítette?
És még hosszasan lehetne sorolni a kismillió szempontot, amiket fejlesztéskor számításba kell venni. Ahelyett, hogy csak az lebegne a fejlesztők szeme előtt, hogy hú, használjuk pont azt a nyelvet, amivel most éppen 50% teljesítmény növekedést lehetne elérni.Én is dolgoztam olyan projekten, ahol a futásidő kritikus volt. Nálunk C# projektnél az volt a mondás, hogy 5 másodperc alatt kell kiszolgálni egy HTTP requestet (kellemesen bonyolult háttér logikákat futtatva több millió adatsoron), mert az előző PHP-s csapat ezt se tudta felülről még csak megközelíteni se. Nálunk ez végül 40-80ms között szórt. Vajon elégedettebb lett volna-e a megrendelőnk, ha mindezt C-ben oldja meg egy másik csapat mondjuk négyszer ennyi fejlesztési időből, és a végén 30-60ms a requestek válaszideje? Miközben ő csak annyit akart, hogy 5 másodpercen belül menjenek a válaszok.
Szóval a világ korántsem olyan fekete-fehér, mint ahogy te látod.
-
pmonitor
aktív tag
válasz
kovisoft #15604 üzenetére
Nézzük az én esetemet. Nekem a kód megírása után eszembe sem jutott, hogy ennél gyorsabban is meg lehetne csinálni. Egyetemi jegyzetben szereplő algoritmus alapján készítettem el. Mert az ember mit gondol, ha egy egyetemi jegyzetben szereplő kód alapján készít el valamit? Nyilván azt, hogy legalább a "középmezőnybe" tartozó (pszeudo)kódról van szó, ha nem is sebességre optimalizált. Az igazság az, hogy a saját korlátaimba estem bele. Aztán jött "joysefke", és belinkelt 1 olyan algoritmust, amiről ránézésre látszott, hogy jóval gyorsabb. Mikor kipróbáltam, akkor ez realizálódott is. Ezért is csináltam meg az oldalamon a kódokat/teszteket a legalapvetőbb kombinatorikai feladatokra. Aztán jöttél Te, és 1 még sokkal hatékonyabb kódot adtál(amit azt hiszem magadtól írtál régebben). Egyébként én nem tudok olyan oldalról, ami különféle témájú alapvető feladatokat megoldó algoritmusokat tesztel/hasonlít össze/érdekességként említ meg. Olyan oldallal találkoztam, ami pl. rendezéseket ír meg/hasonlít össze. De az ilyen oldalon meg pl. a kombinatorikai alapvető dolgokat nem hasonlítják össze. A gúúgli igaz, hogy sok ember barátja, de sok a "salak" is benne. Ráadásul ezek több helyen is felbukkannak. És talán kijenthetjük, hogy nagyon sokat kellene google-zni, hogy megtaláljuk pl. a Te kódodat. De lehet, hogy meg sem találnánk, nem tudom. Ráadásul a 6 téma közül kettőt is megoldottál(az ismétléses és az ismétlés nélküli permutációt). Itt jut eszembe: Remélem nem gond, ha felhasználtam a kódod az oldalamon. Gondolom, ha gond lenne, akkor nem írtad volna ide. Meg ha jól tévedek, talán azért is írtál kódot, mert láthattad, hogy én is azt írtam. De sztem 1 ilyen oldalt nem nekem illett volna elindítani, hanem tényleg egy szakinak.
Egyébként nem tudom, hogy miért olyan nagy gond egyeseknek(vagy többeknek), hogy a tényt leírom: hogy a C gyorsabb, mint a C#? Más is kiállt a C mellett, de ővele még sincs bajuk. Egyébként a standard C++ is lassabb a C-nél. Legalábbis, ha C++ protokolljait/konvencióit betartjuk. Mondjuk az biztos, hogy a C/C++ tanulási görbéje jóval laposabb, mint a C#-é. Mondjuk nekem a "szokásos" nyelvek közül igazán mind1, hogy miben van az algoritmus. A quicksort kódját pl. VB6-ból vettem át. Ha jól tudom innen. De ettől függetlenül azért a jó algoritmust írók többsége C/C++ programozó. Látod itt is Te írtál jó algoritmust, mint aki C-vel asm-el foglalkozol(szerintem).
Valaki azt hiszem említette, hogy miért a "Dos"-hoz hasonlító console alkalmazásokat írok? Mert szerintem algoritmusok/példakódok/tesztek írásához a legideálisabb. Erről jut eszembe. A C-beli printf() is gyorsabb, mint a C++ cout-ja. Na de mind1. Kicsit most hosszabbra sikerült a dolog. De azért a mondanivalóm talán átment. -
kovisoft
őstag
válasz
pmonitor #15603 üzenetére
Nem gondolnám off topicnak a témát, bármit meg lehet értelmesen vitatni, de ha valaki úgy kezdi, hogy ez meg az milyen sz@r, ezek meg azok milyen hülyék, stb, akkor azzal óhatatlanul belegázol valaki másnak a lelkébe, aztán nem győznek takarítani a modik.
Az adott feladat és a rendelkezésre álló erőforrások döntik el, hogy elfogadható-e ez a futásidő vagy nem. Sokszor elfogadható, máskor meg nem. Ha nem elfogadható, akkor valahogy gyorsítani kell a programot, és ennek többféle módja is lehetséges, nem csak a váltás egy másik programnyelvre, pláne ha több millió soros kódbázisról van szó. Első körben nyilván az ember az adott programnyelven az adott programrészt próbálja optimalizálni (pl. gyorsabb algoritmusok használata, heurisztikák beépítése, caching, párhuzamosítás, stb). Bizonyos esetekben lehet hardvert bővíteni vagy nagyobb teljesítményűre cserélni. Nyilván szóba jöhet a kódnak vagy egy részének egy másik programnyelvre való átültetése is, de mit csináljon pl. az, aki már eleve C-ben (vagy akár Assemblyben) oldotta meg a feladatot, és még így is lassú?
Aztán meg olyan is van, hogy ugyan tudnánk gyorsítani a kódon, de ez túl nagy munka lenne és sokba kerülne a cégnek vagy a megrendelőnek, és így máris elfogadhatóvá válik a hosszabb futásidő.
-
pmonitor
aktív tag
válasz
sztanozs #15602 üzenetére
Az a baj, hogy ilyen dologról való post igazából itt off topic sajnos, úgyhogy sokáig nem lehet róla nézőpontot egyeztetni. Tényleg, nem lehetne olyan topic-ot nyitni, ahol az ilyen dolgok nem off topic-nak számítanának?
Egy dolog azért fúrja az oldalam, így mégiscsak meg kell kérdeznem.
Azt mondjátok, hogy mind1, hogy 2 vagy 7 sec. alatt fut le. Az is mind1, hogy <1 perc, vagy 15 perc alatt végez valami? -
válasz
pmonitor #15594 üzenetére
Igazából senkit sem érdekel, hogy minél gyorsabban fusson valami, az érdekes, hogy az elvárt időn belül lefusson. Ha az elvárt idő 7 mp és lefut 2 mp alatt, akkor nem fogják árírni c-be vagy assy-ba, hogy 0.05 mp alatt lefusson.
Ja és sokkal valószinűbb, hogy ha 10 mp alatt futna le, akkor se keresnek másik programozási nyelvet, hanem csak egy gyorsabb implementációt ugyanarra a problémára (ha van ilyen). -
pmonitor
aktív tag
válasz
pmonitor #15600 üzenetére
Elkészítettem az ismétléses permutációval megvalósított Cutter kódját C-ben. Ez 3 sec-en belül végez a kódba égetett feladattal. Akit érdekel, itt megtalálja.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- ÁRGARANCIA!Épített KomPhone Ryzen 7 9800X3D 64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- Bomba ár! Fujitsu LifeBook U939x- i5-8GEN I 8GB I 256SSD I 13,3" FHD Touch I HDMI I Cam I W11 I Gari
- TOP PC konfig /Ryzen 7 9800X3D, 32GB DDR5 RAM, 1TB SSD/ akciós áron eladó!
- Bomba Ár! Fujitsu LifeBook E780 - i5 I 4GB I 250GB I DVDRW I 15,6" HD I Cam I W10 I Garancia!
- HIBÁTLAN iPhone 14 128GB Starlight -1 ÉV GARANCIA - Kártyafüggetlen, MS3238
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest
Cég: FOTC
Város: Budapest