Jump to content

Kā konkrēti izpaužas C++ valodas tuvums "dzelžiem".


Raimonds1
 Share

Recommended Posts

nevertell

2016. gadā jau varēji mācīties valodu, kas nav veca un rezultātā pilna ar tuftu. Ir taču Rust un Go. Un es ceru, ka C++ mācies tikai C++14 un C++17 standartus, nevis kautko aizvēsturisku.

Link to comment
Share on other sites

Kaut kur pie masīviem pašlaik esmu.

Ta jau drīz tiksi līdz pointeriem. :mrgreen:

 

 

Ir taču Rust un Go.

Tikko kā sagribēsi taisīt kādu GUI programmu, tā sapratīsi, ka Rust un Go ir tufta.

 

Labots - HIGH-Zen
Link to comment
Share on other sites

Raimonds1

Man ir blakusmērķis - pie viena izvērtēt pieejamo mācību materiālu kvalitāti.

 

Un mācos es lēni, bet pamatīgi. Ar izpratni.

 

 

 

2016. gadā jau varēji mācīties valodu, kas nav veca un rezultātā pilna ar tuftu. Ir taču Rust un Go. Un es ceru, ka C++ mācies tikai C++14 un C++17 standartus, nevis kautko aizvēsturisku.

 

Līdz tam vēl jāpamācās.

https://isocpp.org/std/status

https://en.wikipedia.org/wiki/C%2B%2B14#Heterogeneous_lookup_in_associative_containers palasīšu ko nu sapratīšu

Link to comment
Share on other sites

 

 

pie viena izvērtēt pieejamo mācību materiālu kvalitāti.

Ļoti interesanti. Vai var lūgt kādu mācību materiāla vērtējumu?

Link to comment
Share on other sites

nevertell

 

 

Tikko kā sagribēsi taisīt kādu GUI programmu, tā sapratīsi, ka Rust un Go ir tufta.
 

Rust un Go ir GTK binding'i. Ir arī OGL un top Vulkan binding'i Rūsai. Ko vēl tev vajag ?

Link to comment
Share on other sites

Varbūt tagad ir kaut kas mainījies, bet pēdējoreiz kad skatījos, tad GTK uz Win izskatījās labākajā gadījumā ciešami. Plus bija kaut kādas problēmas ar rakstību uz Win (vari parakstīt latviski piemēram iekš Inkscape).
OGL tā kā OpenGL domāts? Tas ir tas grafiskais interfeiss?
Kur Qt, WxWidgets vai vismaz IUP? Tātad uz Win atliek tikai Win API, jāvelk ārā Petzold grāmata - 90tie iz bek.
 

Link to comment
Share on other sites

Inspektors Caps

 

 

2016. gadā jau varēji mācīties valodu, kas nav veca un rezultātā pilna ar tuftu. Ir taču Rust un Go. Un es ceru, ka C++ mācies tikai C++14 un C++17 standartus, nevis kautko aizvēsturisku.

Matemātikai vispār ir jau tūkstoši gadu. Laikam arī tā jāmaina, jo veca... Pascal nav tufta. C++ ir pilna ar tuftu, un tie jaunie standarti neko vieglāku nepadara. Pie tam tās jaunās ir izteikti high-level fīčas, bet tēma ir par low-level jeb tuvumu dzelžiem.

 

Uz tēmu ideāli atbild raksts "After All These Years, the World is Still Powered by C Programming". Īpaši vēršu uzmanību, ka tur zemāk ir nodaļa "Why is the C Programming Language Still Used?", kur paskaidroti sekojoši punkti:

  1. Portability and Efficiency
  2. Memory Manipulation
  3. Deterministic Usage of Resources
  4. Code Size

Tie arī ir tēmā jautātie iemesli, īpaši jau nu otrais!

Link to comment
Share on other sites

Raimonds1

Ja būtu iespējams, bez personīgiem apvainojumiem - vienkāršā valodā

 

C++14 un C++17

  standartus latviski, kas mainās koda rakstīšanā, kompilatorā, uztveres ērtumā, cita koda lasīšanā, vēl kaut kas? 

Man radās tāds priekšstats, ka viens no mācīšanas - mācīšanās variantiem būtu vispirms sarakstīt tādu sarakstu, ko VISPĀR VAR IZDARĪT ar valodu un tas atsevišķiem paņēmieniem. Piemēram, kaut kādu mainīgo vai datu apstrāde. 

Lasām sākuma tekstu, domājam, kā attēlot zoles kārtis. Izlasam, ka baitam var apstrādāt katru bitu, salīdzināt ar cita baita to pašu vai citu bitu.

Uzzinām, ka baitu darbības ir ļoti efektīvas un resursus taupošas. Izdomājam, kā vienā baitā jau gatavu ietvert informāciju par kārts stiprumu, punktu vērtību, kad stiķis jau paņemts un kā tajā visa ieviest atbilstības  funkciju (ja prasa pīķi, jāliek pīķis, ja trumpi - trumpe, ja nav - tad drīkst likt jebko), izdomā, kā tam baitam kaut ko pielikt, atņemt vai pabīdīt, lai tas atzīmējas kā pirmais gājiens, kas prasa to atbilstību.

Tad sazīmējam tam visam smukas blokshēmas, palasam, ko var izdarīt ar citiem variantiem, piemēram, kārti attēlot kā citu datu kopu, string vai masīvu.

 

Un tikai tad sākam ņemtni ar sintaksi, skatamies, cik tas viss ātri un smuki darbojas un maz vietas aizņem.


 

 

Matemātikai vispār ir jau tūkstoši gadu. Laikam arī tā jāmaina, jo veca... Pascal nav tufta. C++ ir pilna ar tuftu, un tie jaunie standarti neko vieglāku nepadara. Pie tam tās jaunās ir izteikti high-level fīčas, bet tēma ir par low-level jeb tuvumu dzelžiem.

Toties pedagoģijā un apmācības metodēs notikusi ļoti liela attīstība.

http://kursors.lv/2016/03/30/izdota-pirma-bernu-gramata-latviesu-valoda-par-programmesanu-un-algoritmisko-domasanu/

Kāds ir lasījis?

1801. jau šis tas sākās 

Labots - Raimonds1
Link to comment
Share on other sites

Raimonds1, ja grivi low level, sāc ar moderno CPU mācīšanos, ar viņu cache, branch prediction, utt utjp. Tad ņem valodu, ko vēlies un aplūko, kā tajā var implementēt kodu, kurš ir efektīvs uz šiem dzelžiem. Kā Tu vari palīdzēt kompilatoriem un interpretatoriem.

Eh, sintakse tik maz ko nozīmē... Visas viņas ir turing complete (https://en.wikipedia.org/wiki/Turing_completeness)

Link to comment
Share on other sites

Tad sazīmējam tam visam smukas blokshēmas

..

Un tikai tad sākam ņemtni ar sintaksi, skatamies, cik tas viss ātri un smuki darbojas un maz vietas aizņem.

 

 jā, aptuveni tik vienkārša tā programmēšana arī ir. mazliet palasam, pazīmējam shēmas, iemācāmies programmēt un uzprogrammējam visu, ko vien vēlamies līdz perfektam rezultātam.

shematiski tas izskatās aptuveni šādi:

 

1-625x402.png

  • Patīk 2
Link to comment
Share on other sites

Senilikis
variantiem būtu vispirms sarakstīt tādu sarakstu, ko VISPĀR VAR IZDARĪT ar valodu un tas atsevišķiem paņēmieniem

Vēlu veiksmi, bet tad gan publicē to sarakstu, vismaz pirmās 100 lpp.

 

 

 

Uzzinām, ka baitu darbības ir ļoti efektīvas un resursus taupošas. Izdomājam, kā vienā baitā jau gatavu ietvert informāciju par kārts stiprumu, punktu vērtību, kad stiķis jau paņemts un kā tajā visa ieviest atbilstības  funkciju (ja prasa pīķi, jāliek pīķis, ja trumpi - trumpe, ja nav - tad drīkst likt jebko), izdomā, kā tam baitam kaut ko pielikt, atņemt vai pabīdīt, lai tas atzīmējas kā pirmais gājiens, kas prasa to atbilstību.

 

Clever stuff jau nav iebāst maksimāli daudz informācijas vienā atmiņas apgabalā, bet gan algorimtu izveidē, kuri spēs visātrāk apstrādāt doto informāciju, šeit būs daži materiāli algorimtu izstrādē(daudz matemātikas, lai gan kur nav)

http://sist.sysu.edu.cn/~isslxm/DSA/textbook/Skiena.-.TheAlgorithmDesignManual.pdf

http://beust.com/algorithms.pdf

Iesaku palasīt vismaz ievadu katrā nodaļā, mazliet pavērš skatienu datorzinātnē, gan par problēmām, un dažiem over-complicated risinājumiem.

Edit.

https://www.youtube.com/playlist?list=PLD28639E2FFC4B86A - interesantas lekcijas par to kā datu tipi tiek attlēloti binārajā skaitīšanas sistēmā C, arī pointeri utt. īstenībā tiek sniegta atbilde tavam orģinālajam jautājumam, gan par visiem standartiem float un double ,

2's compiment, utml.

 - kautkas par pointeriem

 - C++ pilnīgiem noobiem, kautkur viņam bija video par Visual Studio, diezgan interesants Labots - Senilikis
Link to comment
Share on other sites

Inspektors Caps

 

 

Raimonds1, ja grivi low level, sāc ar moderno CPU mācīšanos, ar viņu cache, branch prediction, utt utjp. Tad ņem valodu, ko vēlies un aplūko, kā tajā var implementēt kodu, kurš ir efektīvs uz šiem dzelžiem. Kā Tu vari palīdzēt kompilatoriem un interpretatoriem. Eh, sintakse tik maz ko nozīmē... Visas viņas ir turing complete

Raimonds ir teorētiķis, un vismaz to atklāti pasaka, bet, ja cilvēks var pateikt, ka programmēšanas valodu lielākā vai pat vienīgā atšķirība ir sintaksē, tad ar to viņš uzreiz ir pateicis, ka no šīs tēmas nezin neko. To minēto CPU funkciju kaut kāda koriģēšana ir tāda līmeņa smalkā optimizācija, kas 99% programmēšanas vispār nav jāizmanto. Tās funkcijas strādā transparenti un plus vēl mūsdienu optimizējošie kompilatori ļoti labi pieoptimizē dažādas nianses. Bet tas ir tipiski visādiem high-level un web developeriem - kad runa ir par vienkārši normālu low-level programmēšanu, sākt bezsakarībā ļerkstēt par visādām ūberoptimizācijām. Gan tādēļ, ka paši no tā neko nesajēdz un viņu prātiņā liekas, ka "tas ir tas pats", gan tādēļ, lai it kā parādītu low-level programmēšanas bezjēdzību. Protams, patiesībā parādīts tiek tikai tas, cik lieli diletanti viņi ir, un kā viņi vienmēr "netīšām" aizmirst, ka visas tās viņu dižās high-level platformas tiek izstrādātas ar low-level instrumentiem. Tādi mums te ir gan meža vīrs, kurš iesūbējis savās ikdienas dažās priedēs un principiāli nespēj izprast neko plašāk, īpaši bināru, gan zvērs, kurš stāstīja, ka ikdienā skaitot un bakstot tīkla protokolu baitus, bet tad uzrakstīja fantastisku līkkodu, kas atklāja, ka šis nemaz nezin pamata binārās operācijas. Nerunājot nemaz par to, ka viņš tās aizvietoja ar peldošā komata skaitļu kāpināšanu, kas norāda uz pilnīgu smadzeņu atrofēšanos... Un tas, ka šeit gandrīz neviens pret visiem tiem lamerismiem neiebilst, parāda to, ka pārējie šeit nav ne par matu labāki.

 

Ar ko visbūtiskāk atšķiras C/C++, Pascal, salīdzinot ar C#, Java? Ar to, ka pirmajās manipulē ar reālo atmiņu! Integeri, masīvi, stringi - C tie ir tieši tie, ar ko darbojas CPU, bet Java u.c. tie ir abstrakti kaut kādu klašu objekti virtuālās mašīnas menedžētā atmiņā, kas parasti vēl ir OS dinamiskajā atmiņā. Tev patika CPU nianses.. Nu, teiksim, vajag sinhronizēt kešatmiņu (ar RAM). C es paņemšu inline asambleri un ierakstīšu attiecīgās CPU instrukcijas. Ko darīsi Java? Ak, pareizi - tur tas nemaz principā nevar būt iespējams, jo arī kods netiek kompilēts uz CPU instrukcijām, bet gan uz fiziski neesoša CPU jeb virtuālās mašīnas instrukcijām. OK, taisām MP3 streamotāju. Es C rezervēšu buferi visam Ethernet freimam un MP3 kompresoram padošu pointeri ar attiecīgu offsetu, kur likt datus. Tālāk to pointeri ar attiecīgiem offsetiem pēc kārtas padošu RTP, UDP, IP, ARP slāņiem, līdz freims ir izveidots, un beigās tieši to buferi arī iedošu DMA, lai sūta tīklā prom. Ko darīsi Java? Pirmkārt, kā padosi masīvu, lai katrs tīkla slānis var pielikt savu header, sarēķināt čeksummas utt.? Otrkārt, kā savu Java mistisko objektu padosi DMA? Visur bezjēdzīgā trulā kopēšana? Bet pēc tam vervelēsi par to, ka vajag 1 GHz procesoru.. tam pašam, ko es darīšu ar 100 MHz, man startēsies ātrāk, strādās bez aizturēm un vēl pāri paliks, lai vadītu displeju u.c.

 

Un kā Tu vispār taisies programmēt dzelžus ar tām high-level valodām? AndrisBB postā #373 ir izkopējis lielisku reālās dzīves supervienkāršu piemēru, kur portā uzstāda pinu. Lūdzu Java kodu kaut vai tām pēdējām divām rindām:

LPC_GPIO1->DIR |= (1 << 3);
LPC_GPIO1->SET |= (1<<3);

Kā arī lūdzu kompilatora piemēru, kas kompilē Java kodu uz ARM firmwari. Jo, kā jau teici - izvēlies valodu, tām jau tikai sintakse atšķiras...

Link to comment
Share on other sites

Raimonds1

Jā, man patīk teorija un es parasti mēģinu to savā varbūt Jums dīvainā veidā izprast līdz pašiem tās dziļumiem, lai tad kaut ko veidotu.

 

Es lasu par datu tipiem, izlasu, ka var būt visādi skaitļi, burti un cik to attēlošanai vajag tērēt atmiņas resursus.

256 dažādi varianti ar 1 baita (8 bitu) dažādām kombinācijām iespejami. ja lieto 1 un 0 - tad daudz mazāk atminas un viss notiek ātrāk.

Zoles kārti var aprakstīt šitā - pīķa kalps, sestā stiprākā trumpe, punktu vētība stiķī 2 - bezjēgā daudz simbolu, katram vajag baitu. Var mēģināt tos simbolus īsināt - PK3N6 ( EDIT - ar 1 burtu nesanāks aprakstīt, jo kreici un kāravi sākas ar k, vajag 2 burtus - Kr, Ka, P, E), tāpat katram burtam vajag baitu. Varbūt tomēr ierakstit to visu vienā baitā?

 

01010000 1. nulle no kreisās - rezervēta vieta kārts pozicionēšanai kā pimajam gājienam (tad tur ir 1) - jēga - ko prasa, tas jāliek, ja nav, var atmesties vai likt jebko. Pārējās divas kārtis stiķī tiek salidzinātas ar šo pēc šā bita - ja pierasītajai trumpei uzliekt trumpi - tad salidzina pēc stipruma un stiķis aiziet stiprākās kārtis turētajam. Nu un tur tālāk visa pārējā ņemtne - ja prasa ercenu un ir, tad salīdzina tos, ja nav - var mest nost kādu lieko vai ņemt ar trumpi. respektivi - šis bits nosaka pieprasījumu likt attiecigo mastu vai trumpi un pieleik to 1 klāt jebkurai trumpei, ja prasa trumpi un tikai tad tas salīdzina. Pīķiem, krieciem , erceniem arī liek to prioritātes bitu, bet te ir tāda lieta, ka tā prioritāte darbojas tikai tad, ja pretī neliek trumpi, Tātad 2. un 3. bits no kreisās 11 vai 10 vai 01 - ja šie, tad prioritāte tiek ignorēta, ja nav - tad prioritāte paliek.

 

Nākamie 2 biti 10 - tāpēc, ka dāmai ir 11, tāpēc, ka 10 ir mazaks par 11 un var salīdzinat stiprumu stiķi un vēl tāpēc, ka te var jauki ielikt iekšā punktus - 10 binārajā ir 2, 11 binārajā ir 3 punkti. Tātad, ja stiķim skaita punktus, dāmām un kalpiem tos skaita no šiem 2 bitiem.

01111XXX - kreica dāma, 01011XXX - kreica kalps, pārējie attiecigi 4. un 5. bits no kreisās- 11 10 01 00

 

Tad nāk ņemšanās ar kāraviem, kas ir 001XXXXX. Tātad, trumpes ir 011XXXXX - dāmas, 010XXXXX -kalpi un 001XXXXX kāravi. tad pārējos bitus tur visādi kombinē, lai ietvertu stiprumu un punktus.

 

Atiecīgi 000111XXX - kreici, 00010XXX - pīķi un 0001XXX - erceni. 

 

Tad nu tās shēmas būtu visu kombināciju apskate, kad, kā un kuri biti ir jālasa, kas ar ko jāsalīdzina, kā jāskaita punkti un kā jāuzmana, lai neblēdās un liek to, kas prasīts. Ja palasa teoriju, tad, izrādas, tos bitus rindiņā vēl var saskaitīt, cik ir to 1, cik 0 un tur vēl kaut kādu papildus informaciju iebāzt, sevisķi, ja dāmai un kalpam ir 3 lieki biti, kas neko nenosaka ne kārts stiprumam, ne punktiem, ja tos nelasa atsevišķi. Tātad, tur var ielikt 1 vai 0 un darboties ar 1 vai 0 kopējo skaitu.

 

Šajā vieta JAU IR IZDOMĀTS, kādi datu tipi jāapstrādā un tad nāk SINTAKSE, kā to visu pierakstīt!!!!!

Cik procenti darba jau ir paveikts? Vai tur ir programmēšanas domāšana šajā jau paveiktajā darbā?

Varbūt visa pieraksta un sintakses pasākums izaicina pavisam citas spējas, talantus un iemaņas, piemēram, aiz ķeburiem saskatīt šo vārdiski aprakstīto kopainu? Varbūt vispār vajag 2 atsevišķus cilvēkus, kas dara katrs savu?

 

Ja vien tas ir iespējams, diskutējam pēc būtības, bez rupjībām, aizvainojuma un naida.


 

 

šeit būs daži materiāli algorimtu izstrādē(daudz matemātikas, lai gan kur nav)

http://sist.sysu.edu...esignManual.pdf

http://beust.com/algorithms.pdfIesaku palasīt vismaz ievadu katrā nodaļā, mazliet pavērš skatienu datorzinātnē, gan par problēmām, un dažiem over-complicated risinājumiem.

Edit. https://www.youtube....28639E2FFC4B86A-

 

Paldies, sākums ir interesants. Tas, ko vajag.

Labots - Raimonds1
Link to comment
Share on other sites

 

 

256 dažādi varianti ar 1 baita (8 bitu) dažādām kombinācijām iespejami. ja lieto 1 un 0 - tad daudz mazāk atminas un viss notiek ātrāk.

Kāpēc lai darbs ar bitiem būtu ātrāks nekā darbs ar baitiem?

Link to comment
Share on other sites

@@Raimonds1,

Viss ko tu tur sarakstiji ir pilnīgi bezjēdzīgs, lai apstrādātu tos tavus bitus un izlobītu no viņiem kautkādu loģiku, tev vajadzēs 20x vairāk koda rakstīt, salīdzinot ja tu izmantotu normālus mainīgos-struktūras-objektus. Lielais koda daudzums procesoram būs arī jāizpilda, kas aizņems daudz vairāk laika, plus kods arī aiznem vietu, tātad to niecīgo daudzumu ko tu ietupīsi sabāžot bitos, tu desmitārtīgi izterēsi instrukcijās, lai to apstrādātu. (ietaupīsi 64 baitus lai attēlotu kārtis, bet vajādzēs 2kb vairāk koda).

 

99% gadījumos uz PC ņemšanās ar bitiem tev visu palēninās, sarežģīs loģiku un padarīs kodu garāku. Reizēm kautko ietaupīt tu vari ja programmē dzežus vai arī kautkādus komunikāciju protokolus, kur tev jāsabāž pēc iespējas vairāk informācijas mazākā datu daudzumā.

 

Kamēr tu kautko tausties pa miglu MārisO jau sen uztaisija Zoli, kura lieliski darbojas bez visādiem bitiem. 

Labots - AndrisBB
Link to comment
Share on other sites

aizvietoja ar peldošā komata skaitļu kāpināšanu, kas norāda uz pilnīgu smadzeņu atrofēšanos

pilnīgi nopietni - ja Tev ir nepieciešamība regulāri stāstīt, ka pārējie ir bez smadzenēm, bet "odna ja umnaja", jo esi specializējies kādā konkrētā novirzienā, kas citiem nav aktuāls, tad atrodi sievu, audzini dēlus (četrus vismaz), pavadi laiku ar viņiem - būs mazāk laika dročīt forumos, cik stulbi ir visi un cik tu pats gudrs.

 

Es C rezervēšu buferi visam Ethernet freimam un MP3 kompresoram padošu pointeri ar attiecīgu offsetu, kur likt datus. Tālāk to pointeri ar attiecīgiem offsetiem pēc kārtas padošu RTP, UDP, IP, ARP slāņiem, līdz freims ir izveidots, un beigās tieši to buferi arī iedošu DMA, lai sūta tīklā prom. Ko darīsi Java?

īsi un vienkārši - Java var izsaukt JNI ar vajadzīgajiem parametriem, ja līdz tam nonāk.

Ko tev dod matu skaldīšana un tīksmināšanās ap mikrosekundēm? online radio taisi, kas visur čerkst, bet tikai ar tīru C ir laime? man te tagad ir aktuāla reālā laika video strīmošana - un zini, Java atmiņas menedžments tur nebūt nav pudeles kakls. Piedod, ja sagrāvu ilūzijas par to, ka Java == projekts izgāzies un vieni vienīgi zaudējumi, bet C == panaceja. Tieši Java iepriekšējam uzņēmumam ir palīdzējusi apkalpot 100+ miljonus klientu (manā apcirknī - kādi 10 miljoni no tiem), kamēr C programmētāji nervozi pīpē maliņā un gudrākie no viņiem saprot, ka nav viena universāla rīka visām vajadzībām.

  • Patīk 2
Link to comment
Share on other sites

Viss ko tu tur sarakstiji ir pilnīgi bezjēdzīgs, lai apstrādātu tos tavus bitus un izlobītu no viņiem kautkādu loģiku, tev vajadzēs 20x vairāk koda rakstīt, salīdzinot ja tu izmantotu normālus mainīgos-struktūras-objektus. Lielais koda daudzums procesoram būs arī jāizpilda, kas aizņems daudz vairāk laika, plus kods arī aiznem vietu, tātad to niecīgo daudzumu ko tu ietupīsi sabāžot bitos, tu desmitārtīgi izterēsi instrukcijās, lai to apstrādātu. (ietaupīsi 64 baitus lai attēlotu kārtis, bet vajādzēs 2kb vairāk koda).

Pirms gadiem 15 bija viens koda gabals, kur pāreja no booleaniem uz bitiem ļāva ne tikai samazināt RAM patēriņu no 16MB līdz 2MB, bet arī koda izpildes ātrumu uz tā laika dzelžiem samazināja no ~800ms līdz 15-30ms. Kodu gan nevajadzēja 20x vairāk, pamainījās tikai sīkumi dažās rindās. Bet jā, tas ir rets gadījums - pat nevis 1% ikdienas, bet krietni mazāk.

 

Un jā, optimizācijas tika veiktas pēc tam, kad bija skaidri redzams, ka "viss ir slikti" :D

 

Konkrētais koda gabals skaitīja no faila ielādētā bildē izmantotās unikālās krāsas.

Labots - binary
Link to comment
Share on other sites

Raimonds1
Viss ko tu tur sarakstiji ir pilnīgi bezjēdzīgs

 

Kamēr tu kautko tausties pa miglu MārisO jau sen uztaisija Zoli, kura lieliski darbojas bez visādiem bitiem. 

 

Tu vienkārši nenovērtē domāšanas procesu un ideju attīstības gaitu. Man varbūt interesē pavisam kas cits, nevis GATAVS zoles algoritms. Es te pagaidām niekojos ar idejām par bitiem un baitiem. man nav nekādu termiņu, kad jānodod mājasdarbs vai gatavs projekts. MarisO augsta līmeņa valodas projekts man, mēģinot saprast C valodas zema dzelžu līmeņa darbības ar bitiem un baitiem, nedod gandrīz neko.

 

pilnīgi nopietni - ja Tev ir nepieciešamība regulāri stāstīt, ka pārējie ir bez smadzenēm, bet "odna ja umnaja", jo esi specializējies kādā konkrētā novirzienā, kas citiem nav aktuāls

Pieļauju, ka Inspektoram Caps izteiksmes forma varētu būt labāka, izsaukt Mežaveci bija pilnīgi lieki, jo tēma atkal aizies netēmā un tie 2-3-5 cilvēki forumā, kas vispār (labi) saprot un diendienā strādā ar programmām C baitu līmenī tiks diskvalificēti un viss atkal aizies vienos vārtos - gatavu augsta līmeņa, ne C bitu un baitu programmu apspriešanā un slavēšanā, cik tās praktiskas un pieprasītas tirgū.

 

 

ja cilvēks var pateikt, ka programmēšanas valodu lielākā vai pat vienīgā atšķirība ir sintaksē

 

doma bija cita - valodas uzbūvē ir tās funkcionālās iespējas, ko paredzējuši tas veidotāji un tā visa pieraksta veids un mācīšanās sākuma posmā. Manuprāt, vajadzētu atdalīt domāšanu par to, ko, kur, kā darīt ar datiem un instrukcijām un ņemšanos ar tā visa pierakstu, kas izaicina pavisam citas spējas. 

 

 

Kāpēc lai darbs ar bitiem būtu ātrāks nekā darbs ar baitiem?
 

 

Divus bitus var padot uz loģiska UN elementa ieejām un dabūt atbildi.

lai salīdzinātu baitu, vajag vēl vismaz vienu starpposmu. Tā es izdomāju. Iespējams, ka kaut ko neesmu ņēmis vērā, bet pēc loģikas shēmām tā sanāk.

http://www.ni.com/white-paper/14960/en/

In order to compare binary numbers with two bits each, we can use an additional XNOR gate and an AND gate, as shown below.

Labots - Raimonds1
Link to comment
Share on other sites

 

 

Var mēģināt tos simbolus īsināt - PK3N6 ( EDIT - ar 1 burtu nesanāks aprakstīt, jo kreici un kāravi sākas ar k, vajag 2 burtus - Kr, Ka, P, E), tāpat katram burtam vajag baitu. Varbūt tomēr ierakstit to visu vienā baitā?

Gadu jau ņemies un nav ienācis prātā ka to var ierakstīt ne vien vienā baitā, bet 2 bitos?

Vatbūt tā? 

00  = Kreicis

01  = Kāravs

10  = Pīķis

11  = Ercs

Link to comment
Share on other sites

Tiem kas saka, ka Pascal (Delphi) ir vēstures mēslainē - mostieties, un necentieties savu šauro domāšanu uzspiest citiem. Ja esi apguvis kaut ko ļoti modernu, nenozīmē, ka pārējais ir slikts. Arī ar Pascal var iemācīties pareizo domāšanu. Programmētājam galvenais ir domāšanas veids. Valoda - tas vairāk ir sintakse, nevis domāšanas veids. Java utt abstraktās valodas, tur gan iemācīsies tikai konkrēto valodu, nevis to kas un kā strādā. Toties ja iemācīsies to kas un kā strādā, iemācīsies pareizi domāt, tad jebkura valoda būs apgūstama ļoti ātri.

 

Any way, lielākā RVS (ERP) iekš LV ir veidota tieši Delphi XE.

Labots - rubb
Link to comment
Share on other sites

Jeb baitā ir astoņi biti, pilnīgi pietiek ar 2 baitiem, lai ieliktu visu informaciju ko biji pieminējis pāris postus atpakaļ un vēl paliek 7 biti pāri kautkam citam:

 

Masts:

00 - kreicis

01 - pīķis

10 - kāravs

11 - ercs

 

Kārtis:

000 - tūzis

001 - kungs

010 - dāma

011 - kalps

100 - desmit

101 - deviņi

110 - astoņi

111 - septiņi

 

Trumpju stiprums:

0000 - Nav trumpis
0001 - Kreicene
0010 - Pīķene
0011 - Ercene
0100 - Kāravene
0101 - Kreiča kalps
0110 - Pīķa kalps
0111 - Erca kalps

1000 - Kārava kalps

1001 - Tūzis

1010 - desmit

1011 - deviņi

1100 - astoņi

1101 - septiņi

Labots - AndrisBB
Link to comment
Share on other sites

Raimonds1

Tu tikko nodemonstrēji, ka ir jēga manam domu gājienam, vai tu to uzlaboji, vai ne, pagaidām nezinu. Kur it kārts punktu vērtības stiķī un prioritāte pirmajam gājienam?

Tikpat labi var katrai trumpei piesķirt skaitli pec stipruma un atrunāt punktus un ar atsevisķu koda gabalu piešķirt nosaukumus.

 

Blakus programmēšanas apmācibas tēmai ir vēl pāris domas, varbūt pat paradoksi

slinkums reizēm virza progresu un nevēlēšnās kaut ko darīt reizēm virza izdomu

nezinātāja priekšrocības reizēm ir tādas, ka viņs nezin, kāpēc, kaut ko nevar izdarīt

Link to comment
Share on other sites

Tālāk maisi savu kavu, izdali spēlētājiem kārtis kā pointerus. Salīdzini vai atļauts likt attiecīgo karti pēc masta/trumpja. Lai noteikti stiprāko pārbaudi vai no pareizā masta, ja nē, tad vai trumpis, ja nē tad zaudēts. Ja no tā paša masta dad salīdzini pēc kāršu stipruma. Ko tur gadiem domāt? Grūtākais te ir izdomāt labu stratēģiju priekš botiem.

struct card
{
    unsigned int masts      : 2;
    unsigned int karts      : 3;
    unsigned int trumpis    : 4;
    unsigned int punkti     : 3;
    unsigned int UNUSED     : 4;
};
struct deck
{
    card kartis[26];
};

Vēl 4 biti palika pāri

Labots - AndrisBB
Link to comment
Share on other sites

Klau, esi arī ko praktisku uztaisījis? Nu kaut vai Hello world, ar ko visi sāk :) Jeb tikai teoretizē :)

Link to comment
Share on other sites

Raimonds1

 

 

Tiem kas saka, ka Pascal (Delphi) ir vēstures mēslainē - mostieties, un necentieties savu šauro domāšanu uzspiest citiem.

 

Mācos no sākuma reizē Pascali ar C++, Pascal ļoti palidz. 


Jau teicu, ka esmu ticis līdz masīviem.


Pīķa dūzi ar zvaigznītēm uzzīmēt?

Link to comment
Share on other sites

Mezavecis

Iemācīties var, bet 21.gs. mācīties braukt ar zapiņu vai moskviču nu nemaz nevilina, zinot, ka tāds nekad netiks praktiski lietots. Protams, ka tūlīt kāds sāks bļaut, ka stūre ir, pedāļi ir, ātrumkloķis arī un vairāk neko nevajag. Mūsdienās tomēr vajadzētu padomāt  kā taupīt savu laiku un netērēt resursus vecu tehnoloģiju apguvei. 

 

 

Tiem kas saka, ka Pascal (Delphi) ir vēstures mēslainē - mostieties, un necentieties savu šauro domāšanu uzspiest citiem.
Link to comment
Share on other sites

Divus bitus var padot uz loģiska UN elementa ieejām un dabūt atbildi. lai salīdzinātu baitu, vajag vēl vismaz vienu starpposmu. Tā es izdomāju. Iespējams, ka kaut ko neesmu ņēmis vērā, bet pēc loģikas shēmām tā sanāk.

Tātad vēlreiz - Kāpēc lai darbs ar bitiem būtu ātrāks nekā darbs ar baitiem?

Link to comment
Share on other sites

Raimonds1

Tāpēc, ka elektroniski padodot divus bitus uz shēmas ieejām, dabū atbildi vienā piegājienā, kas aizņem kaut kādu reālu laiku.

Savukārt baitu apstrādei padod jau šos rezultātus, kas secīgi seko pēc zināma laika, kas nav nulle.

 

Bet šis virziens neko daudz nedod.

Link to comment
Share on other sites

Mezavecis, tikai tā, interesanti, vai ikdienā pelni naudu ar programmēšanu, jeb vienkārši ir viedoklis?

Link to comment
Share on other sites

 

 

Tāpēc, ka elektroniski padodot divus bitus uz shēmas ieejām, dabū atbildi vienā piegājienā, kas aizņem kaut kādu reālu laiku. Savukārt baitu apstrādei padod jau šos rezultātus, kas secīgi seko pēc zināma laika, kas nav nulle.

 

Tu padod ALU abus mainīgos (32 vai 64 bitus) jebkurā gadījumā, vai tu gribi salīdzināt tikai 2 bitus vai saskaitīt divus 64 bitu mainīgos. Procesors neizvelk tos 2 bitus no mainīgā un nesalīdzina viņus atsevišķi.

http://www.utdallas.edu/~poras/courses/ee3320/xilinx/upenn/lab5-ALUDesign.htm

 

Pietam tos mainīgos no sākuma (x86 gadījumā) no sākuma jādabon no atmiņas/kešatmiņas pirms kautko salīdzināt, kas aizņem 1000x reizes ilgāku laiku nekā pati salīdzināšana

  • Patīk 1
Link to comment
Share on other sites

Mezavecis

Es arī pelnu naudu ar programmēšanu un redzu, kas reāli ikdienā vajadzīgs. Teorētiski taisīt savu ideālo kodu pēc visiem kanoniem un apgūt visu vajadzīgo un nevajadzīgo var tikai diletants vai cilvēks, kam no programmēšanas profesijas ir ļoti tālu. Ne es, ne arī man zināmie programmētāji nevar atļauties tērēt laiku lietām, kas varbūt, kaut kad, kaut kādos noteiktos gadījumos ievajadzēsies.

 

 

Mezavecis, tikai tā, interesanti, vai ikdienā pelni naudu ar programmēšanu, jeb vienkārši ir viedoklis?
 
Link to comment
Share on other sites

Raimonds1

Es mierīgi varu kļūdīties un to atzīt, bet tas kontekstā - zema līmeņa valodas būtība un sintakse ir blakustēma.

Paskatīšos vēlāk un palasīšu, ko nu sapratīšu.


Jebkura gadījumā nupat ienācās vēl viena doma, pagaidām tāda nojausma.


Es, protams, neko īpašu neprogrammēju, bet es diezgan labi saprotu, kāpēc ir problēmas ar C++ un sevišķi C zinātaju un lietotāju skaitu.


 

 

Tu padod ALU abus mainīgos (32 vai 64 bitus) jebkurā gadījumā, vai tu gribi salīdzināt tikai 2 bitus vai saskaitīt divus 64 bitu mainīgos. Procesors neizvelk tos 2 bitus no mainīgā un nesalīdzina viņus atsevišķi.
Link to comment
Share on other sites

Raimonds1

Labāk pasaki, kāpēc pēc pamatkursa programmēšanā daži paliek pie C un C++ un pārējie pāriet uz augstāka līmeņa valodām un C un C++ neko tālāk nemācās?

Link to comment
Share on other sites

Dīvaina tēma. Autors, kurš neprogrammē spriedelē par programmēšanu. Ir bezpilota lidmašīnas. Izrādās ir arī bezlidmašīnas piloti.

  • Patīk 2
Link to comment
Share on other sites

Raimonds1

Man pietiek zināšanu, lai atšķirtu datus, kas ir ievadīti string formā no datiem, kas ievadīti binārā formā un apmēram saprastu, kas te rakstīts

 

https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/asciiBin.html

 

http://r3dux.org/2013/12/how-to-read-and-write-ascii-and-binary-files-in-c/

 

No tā es sapratu, ka strādāt ar bināriem datiem ir vērts, bet var būt situācijas, kad tas binārais skaitlis tik un tā tiek pierakstīts ASCI kodā, lai kā es domātu, ka nu tik būs darbs pa tiešo ar bināriem skaitļiem.

Tur tā dilemma starp human readable un tehnikai ērtu formu ir parādīta.

Es tā esmu iedomājies, ka šāda veida pārdomām ir jābūt PIRMS  sintakses apgūšanas.

 

Mājasdarbu atbildes neprasu, ja kādam tas šķiet interesanti, lūdzu rakstam idejas.

Labots - Raimonds1
Link to comment
Share on other sites

 

 

Any way, lielākā RVS (ERP) iekš LV ir veidota tieši Delphi XE.

Delphi 5, ja gribam būt precīzi.


 

 

Mūsdienās tomēr vajadzētu padomāt kā taupīt savu laiku un netērēt resursus vecu tehnoloģiju apguvei.

Vai arī kā augstākminētie, netērēt laiku "jauno" tehnoloģiju (C++17 ar manuāli 1000+ lapas koncentrēta bullšita) apguvei, bet strādāt.

Link to comment
Share on other sites

 

 

Delphi 5, ja gribam būt precīzi.

Jau pāris gadus tas vairs nav precīzi.

Link to comment
Share on other sites

Tātad pēc tavām domām to veidoja iekš XE?

Vai tomēr veidoja D5 un pirms pāris gadiem pārgāja uz XE. Tad teikt, ka tā ir veidota iekš XE nebūs gluži taisnība.

Link to comment
Share on other sites

Esi filologs, jeb vienkārši patīk filozofēt?

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...