Jump to content

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


Recommended Posts

Raimonds1

https://stackoverflow.com/questions/23726544/how-do-you-compare-only-certain-bits-in-data-type

https://graphics.stanford.edu/~seander/bithacks.html

Tu noteikti ar savu praktiskās programmēšanas pieredzi un gatavu bibliotēku piemēriem mēģināsi šo visu spriedelēšanu ievirzīt kaut kādā savā gatavu, jau izstrādātu projektu apspriešanā. 

Mani šeit interesē kas cits.

 

Link to post
Share on other sites
  • Replies 848
  • Created
  • Last Reply

Top Posters In This Topic

  • Raimonds1

    230

  • binary

    90

  • AndrisBB

    89

  • Mezavecis

    66

Top Posters In This Topic

Popular Posts

es, kā sabiedrības pārstāvis, saku - karogs tavās rokās!!!

Viss, kur klāt piesauc kvantus, ir kruta!

Atbildēšu uz tēmas galveno jautājumu pēc būtības: Programma tiek kompilēta uz procesora instrukcijām. Programma veic darbības ar fizisko atmiņu pa tiešo. Viss, jautājums ir atbil

Posted Images

AndrisBB

Priekš kam tu tos linkus iedevi? Domā es nezinu kā bitu operācijas veikt?

 

Rādi kautkādu reālu piemēru kur un kā tu to pielietosi.

Uzraksti kautkādu struktūru, kur glabāsi savas kārtis un tad funkcijas kā tu kautko apstrādāsi.

Edited by AndrisBB
Link to post
Share on other sites
AndrisBB

Varu pat ideju pasviest. Uzraksti funkciju, kura noteiks ar kurām kārtīm tu vari iet, kad pienāk tavs gājiens. (tu ej otrais vai trešais, uz galda jau ir kārtis un tad ir liste ar kārtīm tev rokās, nosaki kuras ir atļautās)

Link to post
Share on other sites
Mateushs
11 hours ago, ieleja said:

@Raimonds1

kas tavuprāt ir tavu c++ atklājumu pateicīgā auditorija?

 

tev liekas, ka tie 5 000 000+ c++ programētāji šajos 40+ gados nav pietiekoši par visu domājuši pietiekami dziļi, lai cilvēks, kas tieši nemaz nav c++ programētājs, garāmejot viņus “vestu uz pareizā ceļa”?

 

 

Par mūsdienu C++ ar STL (ko izmanto "mūsdienu programmētāji") un līdz ar to programmu kvalitāti, kuras ir tajā sarakstītas, noteiktās aprindās ir diezgan kritiska attieksme, ja neteiktu vairāk. 

Link to post
Share on other sites

Tā kā šis topiks tāpat ir piespamots - atļaušos pamēģināt uzsākt jaunu diskusiju, nedaudz par citu tēmu:

 

Ļoti interesētu - kādas ir to programmētāju, kuri šeit uzturās, domas par quantum computing - vai tam patiešām ir prognozējams praktisks pielietojums pārskatāmā nākotnē - vai tomēr tā ir tīra teoretizēšana (līdzīgi kā nelaimīgā stīgu teorija) ar "aiz matiem" pievilktu praktisko pusi un kārtējais hype?

Link to post
Share on other sites
Inspektors Caps

Atbildēšu uz tēmas galveno jautājumu pēc būtības:

  1. Programma tiek kompilēta uz procesora instrukcijām.
  2. Programma veic darbības ar fizisko atmiņu pa tiešo.

Viss, jautājums ir atbildēts! :D Visi pārējie faktori ir sekundāri un netieši atkarīgi no šiem diviem. Un skaidrībai kā šie punkti atšķiras, piemēram, C# un Java gadījumos:

  1. Programma tiek kompilēta uz tā saucamo baitkodu, kas pēc būtības ir instrukcijas virtuālam procesoram.
  2. Programma veic darbības ar menedžētu atmiņu, kurai atmiņas menedžeris translē un pārbauda adreses uz fiziskajām, atbrīvo vairs neizmantotos blokus u.c.

Gan virtuālais procesors, gan atmiņas menedžeris ir programmatūra. Tātad šajos gadījumos starp uzrakstīto aplikāciju un dzelzi ir vēl viens programmatūras slānis, kas emulē noteiktu funkcionalitāti un arī paņem savu daļu resursu. Native aplikācijas, savukārt pa tiešo darbojas ar instrukcijām un atmiņu tajā līmenī, kādu nodrošina pats procesors. Praktiskā veiktspējas atšķirība var būt no nebūtiskas līdz n-tajām reizēm, atkarībā no pielietojuma un izstrādātāja pirkstu taisnuma.

 

Tēmas jautājums pēc būtības nav tikai par C++, bet par C, C++, Rust, Pascal vai jebko, ko izmanto native koda kompilēšanai. Valodas sintakse, ērtums, objektorientētība, atbalstītās platformas, gatavās bibliotēkas, popularitāte utt. nav tieši saistīti ar "tuvumu dzelžiem". Vispār, kad diskusiju augstākais līmenis ir par programmēšanas valodām nevis, piemēram, programmatūras arhitektūras risinājumiem, kā tas tipiski arī notiek, tad ziniet, ka diskutē tādi pusprofesionāļi, kuriem vēl jāaug. Ir ļoti daudz nesalīdzināmi svarīgāku un kompleksāku lietu kā programmēšanas valodas sintakses apguve un ērtums.

 

Lūk, biedriem jauns mentāli sportisks izaicinājums. Kurš var šo iziet? Cik viegli/grūti gāja?

http://deadlockempire.github.io/

 

P.S. @AndrisBB, ja šo godīgi iziesi līdz galam, tad sapratīsi kādēļ STM32 oficiālās HAL bibliotēkas kods ir pilnīgi nelietojams mēsls. :)

  • Patīk 1
  • Atbalstu 1
Link to post
Share on other sites
18 minutes ago, Inspektors Caps said:

Vispār, kad diskusiju augstākais līmenis ir par programmēšanas valodām nevis, piemēram, programmatūras arhitektūras risinājumiem, kā tas tipiski arī notiek, tad ziniet, ka diskutē tādi pusprofesionāļi, kuriem vēl jāaug. Ir ļoti daudz nesalīdzināmi svarīgāku un kompleksāku lietu kā programmēšanas valodas sintakses apguve un ērtums.

 

Es gan domāju, ka ir nozīme, kādu instrumentu kasti (lasi - programmēšanas valodu) izmantot mājas (lasi - programmas) būvniecībai. Ja es pareizi sapratu domu, protams... Bet, nu jā, es tāds amatieris vien esmu

Edited by Jacob
Link to post
Share on other sites
Inspektors Caps

@Jacob, nozīme ir, bet ņem vērā arī frāzes "augstākais līmenis" un "sekundāri faktori." :) Svarīguma hierarhijā valoda nav pat tuvu augšai... Ja ir sajūta, ka tā nav, tātad līdzšinējie projekti ir relatīvi vienkārši. (Tas gan nekādi nenozīmē, ka tie būtu slikti!) Plus, neaizmirstam, ka valoda nav platforma, ko izskatās, ka daudzi nespēj nodalīt...

Edited by Inspektors Caps
  • Patīk 1
Link to post
Share on other sites
8 minutes ago, Inspektors Caps said:

@Jacob, nozīme ir, bet ņem vērā arī frāzes "augstākais līmenis" un "sekundāri faktori." :) Svarīguma hierarhijā valoda nav pat tuvu augšai... Ja ir sajūta, ka tā nav, tātad līdzšinējie projekti ir relatīvi vienkārši. (Tas gan nekādi nenozīmē, ka tie būtu slikti!) Plus, neaizmirstam, ka valoda nav platforma, ko izskatās, ka daudzi nespēj nodalīt...

 

Kādā valodā tu raksti?

Link to post
Share on other sites
Inspektors Caps

Visvairāk C (ne C++), dažreiz nedaudz MATLAB, bet tam nav nozīmes. :) Šī jautājuma uzdošana jau norāda, ka līdz galam nesaprati augstāk rakstīto. Ja tomēr būtu ko jānoskaidro par kādu, tad būtiski jautājumi būtu kādām platformām cilvēks raksta, kādas bibliotēkas izmanto un kādas arhitektūras veido. Kāda jēga zināt, ka rakstu C, ja C var rakstīt priekš Windows, macOS, Linux, mikrokontrolieriem un gandrīz visa, ko vien var iedomāties. Redzi, valoda neko daudz nepasaka, jo tā ir tikai citu reālo prasmju pieraksta veids!

 

Mājas būvēšanas analoģijā darbarīki drīzāk ir kompilators un IDE, bet valoda ir dokumenti un mērvienības. Dokumenti var būt latviski, krieviski, angliski, rasējumu var skatīties PDF vai printēt, metriskā sistēma ir ērtāka par imperiālo, bet tie visi ne tuvu nav svarīgākie faktori tajā procesā.

Link to post
Share on other sites
3 hours ago, Inspektors Caps said:

 

  1. Programma veic darbības ar fizisko atmiņu pa tiešo.

 

paskaidro lūdzu man kā iesācējam, ko tu ar šo domāji.

 

paldies!

Edited by Jacob
Link to post
Share on other sites
AndrisBB

Lielākajā daļā gadījumu nevis fizisko atmiņu pa tiešo, bet virtuālo adresi uz atmiņu, ko iedevusi OS.

 

Ja vien nedarbojas kerneļa līmenī, tad maz ticams ka sanāks darbodies ar fizisko atmiņu. Var protams kernelim./driverim uzprasīt kautkādos specifiskos gadījumos pieeju fiziskai atmiņai. Piemēram es pārsvarā strādāju ar voideo apsttrādi (gstreamer) izmantojot IMX6 procesorus, tapēc bieži vajag pieeju fiziskai atmiņai, jo piemēram IPU (Image Processing Unit) hardware bloks nevar strādāt ar virtuāli atmiņu, bet vajag nepārtrauktu fizisku atmiņu. Tapēc nākas driverī prasīt CMA (continious memory allocator), lai iedod fizisku neprārtrauktu atmiņu, tad programmā kautko ar viņu darīt softwārtiski, tad padot IPU, GPU vai h264 encodefim kaukādai jau akselerētai apstrādei utt. 

 

Īsumā kautko samurgoju, kas saprot par ko runa, tas sapratīs. 

 

Link to post
Share on other sites
Raimonds1

Man te tāds jautājums. Iekopēju no iepriekšējā komenta frāzi "programmā kautko" kā attēlu.

 

ssjfsjsjs.png

1297 baiti.

16 burti ar visu atstarpi. 80 baiti uz burtu.

Kā to no attēla dabūt uz teksta failu. Kas gatavs ir C/C++

Edited by Raimonds1
Link to post
Share on other sites
12 minutes ago, Raimonds1 said:

Man te tāds jautājums. Iekopēju no iepriekšējā komenta frāzi "programmā kautko" kā attēlu.

 

ssjfsjsjs.png

1297 baiti.

16 burti ar visu atstarpi. 80 baiti uz burtu.

Kā to no attēla dabūt uz teksta failu. Kas gatavs ir C/C++

 

Noprecizē, ko no kurienes uz kurieni gribi dabūt? Tekstu no attēla uz teksta failu?

Link to post
Share on other sites
Raimonds1

1. Jā, no attēla tekstu - tekstu skanēšanai. Cik iespējams tuvu bitu-baitu apstrādes līmenim.

2. Vai nu no attēla vai no teksta tā izkārtojuma pārveidošanai un ērtākai lasīšanai, apskatot interneta tekstus. Te piemēram, bildite ar komentētāja avatāru aizņem 5-to daļu no teksta slejas platuma. Tāpat tā josla zem komenta. 

teksta kompaktākam izvietojumam.

Link to post
Share on other sites
AndrisBB

Droši vien domāts ka viens burts ir 8x10 pixeļi. Katrs pixels vienu baitu liels.


Tu jau vēl neesi atbildējis kā tur zoles problēmu risināsi, tagad jau pārmeties uz tekstu. 

Īsa gan tev tā koncentrēšanās spēja.

Link to post
Share on other sites
AndrisBB

Plus ja tu domā ka tu tagad tur kautkādu jaunu Ameriku atklāsi, glabājot pikseļus bitos melns/balts, tad tā problēma ir jau 100 gadus atpakaļ atrisināta un tiek lietota, it īpaši uz mikrokontrolieriem kur atmiņas ir maz.

Tada sajūta ka tu vienīgais uz planētas esi atklājis baits sastāv no vairākiem bitiem un visi programmētāji pirmstam muļķi bijuši :D

 

 

Link to post
Share on other sites
Raimonds1

Interesi par zoles projektu pazaudēju brīdī, kad visus kārts parametrus saliku vienā bitu rindiņā. Pārējais ir tehniķu darbs.

Es te brīvi asociēju tehnisko domu.


Tev ir bijis, ka kaut ko izdomā, pēc tam skaties, lasi, jā, man jau tā doma arī bija, tāda pati tam, ko kaut kad kāds jau atrisinājis?

Link to post
Share on other sites
AndrisBB

Pastāsti tad visiem ko tieši un kā tu atrisināji, savādāk izklausās pēc tukšas kakāšanas par lietām no kā neko nejēdz

Link to post
Share on other sites
Raimonds1

Es pat reizēm speciāli nemeklēju, KĀ TAS JAU IR ATRISINĀTS un atrodu vai man to kāds pasaka pēc tam.

Link to post
Share on other sites
Inspektors Caps

@Jacob, piemēram .NET viss ir objekts. Pat parasts Int32 nav tikai viens CPU reģistrs vai 4 baiti RAM, bet gan objekts jeb struktūra ar pointeriem uz metožu un citām tabulām. Kad Tu tam pieskaiti 3, tad tā nav tikai viena procesora ADD instrukcija, bet tur tiek darbināts kods, kas sagatavo un pārbauda dažādas lietas un pēc vajadzības attiecīgi rīkojas. Ja tā nebūtu, tad OverflowException un tamlīdzīgas lietas nebūtu iespējamas. Turpretī ar C kodu programmētājs nokomandē procesoru izpildīt ADD instrukciju konkrētā RAM adresē (vai vispār tikai reģistrā). Nekāda cita papildus koda pa vidu nav. Viena instrukcija, nevis desmiti vai simti instrukciju! Ja vajag pārbaudīt vai būs overflow, tad to jāraksta pašam.

https://docs.microsoft.com/en-us/archive/msdn-magazine/2005/may/net-framework-internals-how-the-clr-creates-runtime-objects

 

Pirms 18 minūtēm , AndrisBB teica:

Lielākajā daļā gadījumu nevis fizisko atmiņu pa tiešo, bet virtuālo adresi uz atmiņu, ko iedevusi OS.

Priekš lielākās daļas Tu par dziļu roc un jauc galvu... :D Jā, tā tas lielākās sistēmās ir, bet tas nemaina galveno domu. OS līmeņa (nevis piemēram .NET) virtuālās adreses tāpat translē un pārbauda CPU dzelzis nevis softs. Līdz ar to no "dzelžu tuvuma" skatu punkta tā vienalga ir fiziskā atmiņa.

Link to post
Share on other sites
Inspektors Caps
Pirms 12 minūtēm , Raimonds1 teica:

Interesi par zoles projektu pazaudēju brīdī, kad visus kārts parametrus saliku vienā bitu rindiņā. Pārējais ir tehniķu darbs.

Kā prāta treniņš OK, bet no praktiskā viedokļa Tu neizdarīji pilnīgi neko. Apaļa uzpūsta nulle.

 

Nu gan būs Raimondam šoks:

https://en.wikipedia.org/wiki/IPv4#Packet_structure

https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure

Iedomājies - Tu visu laiku, lasot šo forumu, jau lieto bitus, kas sapakoti baitos! :D

Link to post
Share on other sites
AndrisBB

Starpcitu, kad pirmoreiz pieķēros mikrokontrolierim, tad kāreiz sāku ar .Net un C#, pirmstam par mikrokontrolieriem neko dzirdējis nebiju (varbūt dzirdējis biju, bet ne taustījis).

Bij tads NetDuino kits, interesanti vai vēl tur kautkāda darbība notiek - .Net uz MCU.

 

Izskatš ka tur jau pat trešā paaudze. Varbūt tā labāka alternatīva par Python uz MCU?

Link to post
Share on other sites
Raimonds1
Pirms 43 minūtēm , Inspektors Caps teica:

Kā prāta treniņš OK, bet no praktiskā viedokļa Tu neizdarīji pilnīgi neko. Apaļa uzpūsta nulle.

 

Nu gan būs Raimondam šoks:

https://en.wikipedia.org/wiki/IPv4#Packet_structure

https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure

Iedomājies - Tu visu laiku, lasot šo forumu, jau lieto bitus, kas sapakoti baitos! :D

 

Jā, šo man vajadzēja!

Link to post
Share on other sites
19 hours ago, Inspektors Caps said:

Priekš lielākās daļas Tu par dziļu roc un jauc galvu... :D Jā, tā tas lielākās sistēmās ir, bet tas nemaina galveno domu. OS līmeņa (nevis piemēram .NET) virtuālās adreses tāpat translē un pārbauda CPU dzelzis nevis softs. Līdz ar to no "dzelžu tuvuma" skatu punkta tā vienalga ir fiziskā atmiņa.

 

Piemēram es aptuveni saprotu domu pat virtuālām un fiziskām adresēm. Tāpēc šī Andra info ir noderīga

 

Cik esmu lasījis dažādu informāciju par programmēšanu, tad esmu sapratis to tā, ka valodai, kuru programmētājs izmanto, ir nozīme vairāk nekā vienkārši pieraksta veids. Bet nu iespējams man vēl būs daudz kur savas domas jāmaina

Link to post
Share on other sites
spitaligais
2020.10.14. , 15:26, Inspektors Caps teica:

Lūk, biedriem jauns mentāli sportisks izaicinājums. Kurš var šo iziet? Cik viegli/grūti gāja?

http://deadlockempire.github.io/

 

Kā programmētājs, esmu prastā aritmētiski vidējā līmenī.

Bez jebkādiem helpiem, mātes googles vai citas palīdzības mierīgi izgāju visus pārbaudījumus līdz pēdējam, 2 stundās, varbūt 3.

Laikam jāiet strādāt par testeri drīzāk.

 

Spoiler

Screenshot_20201017_094448.png

 

Edited by spitaligais
Link to post
Share on other sites
Jurkins
2020.10.14. , 20:05, Raimonds1 teica:

kad visus kārts parametrus saliku vienā bitu rindiņā.

Bravo!!! 🤣🤣🤣

 

p.s. jeb tas ir kaut kas baigi komplicēts?

Link to post
Share on other sites
Raimonds1

Nē.

Tāpat nekas komplicēts nebūs, ja mēģinās salikt parametrus tam pieminētajam teksta lasītājam.


14 logi iepriekššējai lapai.


Nelasot var lapu no augšas līdz apakšai pārskrollēt 2 sekundēs.


150 zīmes rindā.

Link to post
Share on other sites
Raimonds1

80 baiti uz burtu, tas ir ap 12 kilobaiti rindā. 20 rindas logā. Ap 300 rindas lapā. Lai būtu 4 megabaiti jānolasa 2 sekundēs.

1. No attēla.

2. No copy-paste loga.

 

diezgan precīzi uzrakstīti sākuma nosacījumi.

Edited by Raimonds1
Link to post
Share on other sites
Jurkins

Raimond, pirms izgudro velosipēdu paskaties, ar ko braukā Tavi kaimiņi vai aizej uz veloveikalu.

 

Nevajag nemaz TCP stekus... visparastākajam mikrokontrolierim kaut kādi taimeru u.c. reģistri 1077624241_2020-10-1710_37_58-ATtiny2313A_4313DataSheet-doc8246_pdf.thumb.png.8cbd3df09a9f7274253537c68c111866.png

Link to post
Share on other sites
Jurkins
Pirms 6 minūtēm , Raimonds1 teica:

diezgan precīzi uzrakstīti sākuma nosacījumi.

velosipeds.thumb.jpg.789b47a3bb0af552c9df0a2243dd0a8f.jpg

Link to post
Share on other sites
AndrisBB
pirms 2 stundām , Raimonds1 teica:

80 baiti uz burtu

80 baiti uz burtu? :D pats saproti ko runā?

Droši vien domāji 80 bitus, bet tad tāpatās ASCII iekodē visu latīņu alfabētu un vēl čupu spec simbolus 8 bitos, unicods visus iedomājamos simbolus 32 bitos 🤔 neizklausās diezko labs tev tas algortitms :D

Pa virsu ASCII vēl uzmet kautkādu Huffman encodingu un saspied to pašu info vismaz 6 bitos vienu burtu.  


pirms 2 stundām , Raimonds1 teica:

Lai būtu 4 megabaiti jānolasa 2 sekundēs.

4megabaiti nolasās visdrīzāk 200 milisekundēs, kritēriji ar tev tādi vāji :D

 

Edited by AndrisBB
Link to post
Share on other sites
Inspektors Caps
pirms 3 stundām , spitaligais teica:

izgāju visus pārbaudījumus līdz pēdējam, 2 stundās, varbūt 3

Forši, vismaz kāds! Man sanāca kaut kur ap stundu, bet tas tādēļ, ka ikdienā rakstu kodu, kur tas ir aktuāli. Varbūt nemaz neesi tik vidējs programmētājs? Vai, ja šobrīd esi, tad ir potenciāls būt nevidējākam un jākāpj uz augšu... :)

 

pirms 3 stundām , Raimonds1 teica:

diezgan precīzi uzrakstīti sākuma nosacījumi.

Laikam esmu stulbs, bet vispār nesaprotu kāds ir uzdevums. Kādēļ tiek rēķināti ļoti mazas PNG kompresētas bildes kaut kādi vidējie baiti uz bildē attēlota teksta burtu? Ko Tu vispār gribi saglabāt - tekstu vai attēlu? Tu vispār saproti, ka tie ir principiāli dažādi dati ar principiāli atšķirīgiem saglabāšanas formātiem? Kādēļ Tu neiepazīsties ar jau esošajiem formātiem? Kāds vispār ir šīs velosipēdu izgudrošanas mērķis?

Link to post
Share on other sites
Jurkins

Nja, nezinu neko par muteksiem, signāliem u.t.t. (tikai dzirdējis esmu), tīri loģiskā veidā pa 38 min. aizgāju līdz šitam, bet te mana loģika pagaidām apstājās... 😁

1177009923_2020-10-1714_52_41-TheDeadlockEmpire.thumb.png.4d2a881f994e391a3f86ea1396d71385.png

Link to post
Share on other sites
AndrisBB

Vēlāk varbūt būs jāpaskatās, visu nedēļu strādāju pa dārzu, uzlikta jauna sēta, šķūnim jauns jums, nav enerģijas vairs priekš mutexiem :D

 


Raimonds jau drīzāk mēģina tur izgudrot kautko tādu

wonkie-bike-c.jpg

  • Haha 2
Link to post
Share on other sites
Jurkins

Fūū... tomēr lo1255050706_2020-10-1719_22_50-TheDeadlockEmpire.thumb.png.8579f42c918e9aa64b74cf0019dd1077.pngģika aizgāja. Vēl 52 minūtes.

 

Tagad dzīves plānā ir iemācīties par visiem semaforiem.

Edited by Jurkins
  • Atbalstu 1
Link to post
Share on other sites
AndrisBB

Tiku līdz The Final Stretch un apnika, pagāja precīzi 30 minūtes.

Atstāšu atvērtu, varbūt kautkad pabeigšu :D

 

Dažus gan izgāju "uz cūceni", tik paspaidiju next/netxt un iziets.

Edited by AndrisBB
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...