Jump to content

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


Raimonds1
 Share

Recommended Posts

Kā kas, tak nav kruti lietot rīku, ar kuru vari darbu padarīt, jālieto tikai modernie rīki (vispār jau arī Delphi XE ir moderns, bet nu tas neskaitās, jo redz Delphi kā tāds esot vecs), savādāk nebūsi krutākais vecis pagastā :D

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

nevertell

 

 

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

Filologiem nav nekāda skara ar filozofēšanu.

 

 

 

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.
 

 

Kad tu apgūsti jaunu bilbiotēku, ej cauri visai fakin dokumentācijai no 1. lapaspuses līdz pēdējai? 

 

Nav jau visur jālieto bleeding edge, bet ir daudzas lietas, kas paliek stipri ērtākas un rezultātā ir jāraksta mazāk kods, lai panāktu to pašu rezultātu. Piemēram, ja lietojam objektu, kuram ir nenosākams lifetime, tad varam nevis čekot referenču skaitu ar roku, varam ielikt objektu iekš std::shared_ptr<>, un to visu darīs tavā vietā.

Link to comment
Share on other sites

Filologiem nav nekāda skara ar filozofēšanu.

Filologs - par to, ka piekasās vienam vārdam, Filozofs - ja vienkārši muld beztēmā. Atškirību starp filologiem un filozofiem zinu :)

 

Lai kāds nepadomātu, ka es te baigi aizstāvu Delphi, jo neko citu nemāku... Tā gluži nav, ikdienā programmēju četrās valodās - C++, C#, Delphi XE un Java(bez GUI lietas). :) Ir pieredze arī ar vēl dažām vecākām valodām, kuras vairs mūsdienās praktiski netiek lietotas.

 

 

Labi, jābeidz dzīt tuftu - jāiet satīrīt apkārtne.

Labots - rubb
Link to comment
Share on other sites

Es iekš Delphi rakstu datu bāzes. Pats domāju ka labi sanāk ;)

 

Bet tīri interesanti - kādas ir alternatīvas?

Vajag lai būtu ērta vizuālā izstrādes vide. Komponenti ātrai un ērtai piekļuvei datu bāzēm ar iespēju norādīt insert, update, delete un viena ieraksta refresh SQL, Kā arī konkrātajai db atbilstošo Primary key ģenerēšanu. (ms ado neder!)

Lai būtu superdb grids ar plašām iespējā. Pivot atskaites. Ertas drukas formas.

Link to comment
Share on other sites

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

D5 ~1998-2013 = 15 gadi

XE ~2013-2016 = 3 gadi

Vēlējos tikai uzsvērt, ka tāda sistēma ir izstrādāta pat ne ar D7, bet D5. T.s. "vecas tehnoloģijas" biedra @Mezavecis izpratnē.

 

Piekrītu, ka daudz kur izmantotās tehnoloģijas nosaka darba vieta, tur nav variantu. Bet jebkuram iesācējam (kā Raimonds1) paskāls būtu tieši laikā.

 

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

Raimonds1

Tāpēc jau ir jautājums un iespēja meklēt info, kā tur ir, kad kārti apraaksta ar 0 un 1, burtiem vai cipariem decimālajā, astotnieku vai 16 nieku sistēmā. Pedagoģiskais izaicinājums būtu visus tos veidus apskatīt un salīdzināt.


Kaut vai pēc tiem datiem, ko par programmu dod kompilators.

Link to comment
Share on other sites

To visu apraksta un apskata pirmajās 2 vai 3 lekcijās matemātikā un programmēšanā, tu to esi izstiepis gada garumā.

Matemātikā līdz riebumam var saskaitīt, atņemt, reizināt skaitļus binārā, octālā un hrxadecimālā formā gan ar, gan bez komatiem.

Programmēšanā var izeksperimentēties ar datu tipiem un struktūrām cik vien patīk.

Labots - AndrisBB
Link to comment
Share on other sites

Mezavecis

Tikai pie nosacījuma, ja ir konkrēts mērķis un gatavs algoritms. Citādi bezjēdzīga darbība. Līdz šim tev izdodas kult sviest bez jebkāda mērķa jeb bezlidmašīnas pilotēšana. 

 

 

Pedagoģiskais izaicinājums būtu visus tos veidus apskatīt un salīdzināt.

 

Mūsdienās iesācējiem ir kaudzēm variantu, bet pie mums kaut kā pascal izrādās labākais variants pamatu apgūšana. Tikai tāpēc, ka to visi darījuši 15 gadus atpakaļ. Tās bija tās vecās tehnoloģijas par ko jau gadiem stāstu. Pirms 10 gadiem pascal bija ze best un joprojām muļļā to pašu veco dziesmu, it kā progresa nebūtu un visi pie DOS lodziņiem joprojām tup.

 

Pilnīgi kaut kas cits ir jau gatavu komerciālu risinājumu uzturēšana, kurus neviens no jauna netaisīs. 99% tas nebūs pascal kods.

 

Piekrītu, ka daudz kur izmantotās tehnoloģijas nosaka darba vieta, tur nav variantu.
Link to comment
Share on other sites

Raimonds1

Vēl pāris ne programistisku problēmu.

Tirgus nav vienīgais, kas nosaka, kas ir un kas nav vajadzīgs.

Vajadzīgums arī nav kaut kas viens, var būt vajadzīgas konkrētas prasmes, lai ar konkrētām prasmēm dabūtu darbu un var būt attīstības dēļ valstij vienkārši vajag noteiktu daudzumu to C, C++ speciālistu, lai notiktu attīstība.

 

Kā mainīsies industrija apmēram var minēt, bet ir diezgan noteikti skaidrs, ka no tām pamata prasmēm daudz kas būs atkarīgs.

 

Ja nu no tas gatava produkta domāšanas sāņus nekādi, tad problemu identificēšana, apmācības metožu meklēšana, jaunas pieejas koda lasāmībai, skaidrojamībai, savietojamibai, mācāmībai bērniem arī ir produkts, šis, piemēram, maksā 15 Eur.

http://www.monday.lv/notikums/konference-berns-nakotne-programmesana/

 

Mācoties es izmantoju savu nezināšanu un grūtības, uztveres izaicinājumus šī procesa saprašanai.


 

 

To visu apraksta un apskata pirmajās 2 vai 3 lekcijās matemātikā un programmēšanā, tu to esi izstiepis gada garumā.

 

Man ir ari citas nodarbes. Un tā mana pieeja ir tāpēc, ka es gribu saprast, kāpec šī lieliskā, portablā, spēcīgā un sskaistā valoda netiek apgūta tik labi, kā vajadzētu. 

Link to comment
Share on other sites

 

 

Man ir ari citas nodarbes. Un tā mana pieeja ir tāpēc, ka es gribu saprast, kāpec šī lieliskā, portablā, spēcīgā un sskaistā valoda netiek apgūta tik labi, kā vajadzētu.

Labāk dari kaut ko vienu, bet kārtīgi, nevis grābsties gar visu un centies mācīt citiem to, par ko pašam nav sajēgas. 

Link to comment
Share on other sites

Redzi, laiki ir citi un dzelži ir citi. Tie laiki, kad ZX (48 Kb, 2,5 MHz) bija sapņu virsotne, ir pagājuši. Pat 8086 (640 Kb, 8MHz) laiki, par kuru Bils izteicās, ka vairāk atmiņas nebūs vajadzīgs nekad, arī ir prom. Un tajā laikā nācās pastrādāt pie programmiņas, kura prastu sarēķināt kolchozniekiem pajas. Jauniešiem paskaidroju - bija laiki, kad jūsu senči sagribēja "brīvību" un kapitaļizmu. Nafig kolhozu, nafig kopējo traktoru!!! Katram sava gove, katram savs gazika pakaļtilts !! Dajoš brīvību !!

 

Nu lūk. Vienīgais piejamais aparāts (neskaitot "garāžā" salodēto, no radiožurnāliem noskatīto kaut kādu mikro 80 ar 2Kb Basic) bija ZX, kura Basic nebija labs. Toties bija tam verķim Pascal ar labu kompilatoru. Kompilators ļāva iekļaut tekstā mašīnkodu. Jau tad. Bija arī kaut kāds C kompilators, bet tik traki jēls, ka negribas pat atcerēties.

 

Tad savajadzējās printeri, lai pajas būtu uz papīra. Komplektā nopirkās "IBM savietojams" kompis Iskra https://ru.wikipedia.org/wiki/%D0%98%D1%81%D0%BA%D1%80%D0%B0-1030ar 10 Mb (!!) cieto disku.

Ja jau ir kompis, tad radās vajadzība jamu izmantot. Protams, grāmatvedībā, visvisādās uzskaitēs - ķipa, lai šoferīši degvielu nepizģī, lai algas 18. datumā ir uz galda katram saprotamā formātā, u.t.t.

 

Pamēģināju visādas valodas, tai skaitā C. Bet vecie niķi jau neliek miera. Izvēlējos Fox, jo valoda saprotama. Starp citu, kājas Paskālam, dBase, Fox un pat visai mūsdienīgajam Pitonam aug no Algola.

 

Pie C nācās atgriezties, sākot niekoties ar Arduino. Tuvums dzelžiem lielisks. Starp citu, tikpat tuvs, kā Paskālā. Pitonā un citās "modernajās" valodās. Visās ir iespējams iespraust mašīnkodu. Liekas, ka problēma ir slinkumā un dzelžu jaudā. Visādas Javas un Visual bla bla ir slinkuma (un neefektivitātes) kalngals. Manuprāt, C labums ir labi pārdomātā kompilatorā un smadzeņu pišanā ar reklāmu. Algolveidigās valodas efektivitātes ziņā nav ne gramu sliktākas. Toties (man) labāk saprotamas. Ačgārnais poļu pieraksts mani nemaz nesajūsmina. Protams, katram savs. 99% ļaužu arī latviešu valoda ir absolūti nesaprotama. Pat tiem ļaužiem, kuriem tā ir dzimtā valoda.

 

P.S. Kādā vietējas nozīmes graudu kaltē 19 gadus darbojas klientu datubāze, uzrakstīta iekš FoxPro. DOSā, ja kas. Precīzāk - W98 DOS modē. Visa programatūra saiet vienā disketē :)

Link to comment
Share on other sites

Mezavecis

Katram par dzelžiem ir citāda izpratne. Raimonds joprojām ir iesprūdis mikroshēmās un cenšas saprast, kā kaut kur dziļi iekšā var ar C/C++ bakstīt bitus. Diemžēl neviens, ieskaitot viņu pašu, nav sapratis, kāpēc to vajag darīt.

 

Es ikdienā darbojos ar dzelžiem, programmēju tiem softu, bet viena maza nianse - n tūkstošu vērtam verķim var atļauties uzlikt miniPC ar linux vai Embeded Windows. Līdz ar to bitos nav jēgas līst, jo PC pilnīgi pavelk visas populārās programmēšanas valodas, kur primārais nosacījums operatīvi pielāgot sistēmu klienta vajadzībām. Specifikācijā ir konkrēti ātrdarbības kritēriji un attiecīgi tajos jāiekļaujas.  Nevienam neinteresē ideālais kods vai ideāli optimizēta atmiņa. It kā vienalga, ar ko programmē risinājumu, tikai jāspēj kodu sadalīt starp citiem kolēģiem un X laikā veikt izmaiņas, notestēt, līdz ar to rīku izvēle parasti sašaurinās.

Link to comment
Share on other sites

Nav bijusi vajadzība mācīties Pascal, bet vienreiz darbā vajadzēja pārrakstīt samērā daudz sen rakstīta koda no Pascal uz C un secinājums viens - tā valoda ir drausmīga, pēc brīža iestājas pilnīgs marasms :D nav saprotams kāpēc, lai kāds no laba prāta kautko viņā taisītu no jauna un kapēc viņa kādam tiek mācīta.

Varbūt vienīgi vēl sacenšas ar VisualBasic

Labots - AndrisBB
Link to comment
Share on other sites

:grin: tu esi apķērīgs
The code name was VBK – Visual Basic killer.

Par VB runājot

[deleted]
2258d, 15h

Visual Basic 6.0, bitches. Then I'll roll the run-time libs into the installer. While the rest of you are writing reusable, modular objects, I'll be sipping tea. My customers will be wondering how I did it so fast, even though I spent most the month slacking off, and be praising me for the easy to use interface. If they need any serious changes, I'll just rewrite the whole thing and charge em for it.

1

Tā ka plusi ir.

Link to comment
Share on other sites

VB ir viens no iemesliem, kādēļ nekļuvu par programmētāju :). Ar baigo entuziasmu pašmācības ceļā bērnībā apguvu VB - un pēc tam praktiski neiespējami likās apgūt ko citu, jēdzīgāku... VB diemžēl pamatīgi sačakarē izpratni par programmēšanu kā tādu.

Link to comment
Share on other sites

VB neko nesačakarē. Drīzāk VB ļāva (ļauj arī tagad - MS Office) programmēt arī tiem, kas nav programmētāji.

Link to comment
Share on other sites

Mezavecis

Tas laikam individuāli. Pateicoties VB6 tieši kļuvu par programmētāju un kaut kad pienāca brīdis, kad vajadzēja apgreidoties uz kaut ko progresīvāku un neliels kultūršoks bija, ka mainīgie obligāti jādefinē, rindu beigās jāliek semikoli utml.

Bija mēģinājums sākt ar C++ MFC, bet tā bija slikta ideja. Iespējams, ka grāmata (tajos laikos nebija 100+ tutoriāļu un pieejams visiem internets) nebija domāta iesācējiem.  

 

VB ir viens no iemesliem, kādēļ nekļuvu par programmētāju
Link to comment
Share on other sites

nevertell

 

 

Pie C nācās atgriezties, sākot niekoties ar Arduino. Tuvums dzelžiem lielisks. Starp citu, tikpat tuvs, kā Paskālā. Pitonā un citās "modernajās" valodās.

Tu saki, ka pitons ir tuvs dzelžiem ? Tikpat tuvs, kā C ?  

Link to comment
Share on other sites

Raimonds1

Tagad ir laiki pamainījušies, internetā  pieejams blāķiem materiālu un problēma ir prast izvēlēties no visa, ko piedāvā un neizvēlēties kaut kādus vieglos ceļus. Tam, kam es ticu pēc šeit un citur lasītā ir tiešām tas, ka nepareizi izvēloties to sākumu var izdarīt aplamus secinājumus un vēlāk tas atspēlējas.

 

Tāpēc es esmu izdomājis šādi - ja jau C valodu deklarē kā pamatu un tas stiprās puses ir 

 

 

 

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:

 

Portability and Efficiency

Memory Manipulation

Deterministic Usage of Resources

Code Size

 

 

Tad nu meklēšu ka nu tēmas, kur tas konkrēti izpaužas, un darbības ar bitiem un baitiem ir viena no tām, vispirms apgūšu teoriju, ko un kāpēc ar to dara (piemēram, da jel kādu datu pierakstu ar burtiem, no kuriem katrs aizņem baitu un šo pašu datu pierakstu ar 1 vai diviem baitiem, varbut astotnieku, varbut 16 nieku sitēmā) JAU PAŠĀ MĀCĪBU SĀKUMĀ. 

 

Tā es esmu iecerējis jau no paša sākuma apgūt to skaistumu un efektivitāti kas tai C un C++ valodai ir. Ja tādu gatavu materiālu nebūs, tad nāksies meklēt tos veidojošās sastāvdaļas un strādāt ar asociācijām vai konsultēties ar zinātajiem.


 

 

centies mācīt citiem to, par ko pašam nav sajēgas. 

 

Ļoti iedvesmojoši. Nevēlos strīdēties un meklēt piemērus. Saproti, kā gribi.

Link to comment
Share on other sites

Es, nebūdams programmētājs, iesaku Raimondam Pirmajam apgūt datu pierakstu 21-nieku sistēmā ar burtiem... trim ... X, Y un vēl ar vienu kiriļicā (nu vai kaut utf kodējumā - H, U un J). JAU PAŠĀ MĀCĪBU SĀKUMĀ.

 

p.s. šī tēma ir fantastiska :D:D:D

Labots - Jurkins
Link to comment
Share on other sites

 

 

Tu saki, ka pitons ir tuvs dzelžiem ? Tikpat tuvs, kā C ?

 

Vai Tu, luudzu, nevareetu nociteet arii naakamo teikumu par masjiinkoda iesprausjanas iespeejaam? Citaadi stipri izskaties peec bezatbildiiga politikja vai nozombeeta zjurnaljugas, kursj par savu galveno veiksmi un panaakumu uzskata kaut ko izraut no konteksta un tad teelot baiso patiesiibas atklaajeeju.

 

Un jaa. Tas fakenais masjiinkods, cilveeciigi uzrakstiits, saucas Asmeblers, Vai to var saukt par valodu - gruuti teikt.

Link to comment
Share on other sites

nevertell

 

 

Vai Tu, luudzu, nevareetu nociteet arii naakamo teikumu par masjiinkoda iesprausjanas iespeejaam? Citaadi stipri izskaties peec bezatbildiiga politikja vai nozombeeta zjurnaljugas, kursj par savu galveno veiksmi un panaakumu uzskata kaut ko izraut no konteksta un tad teelot baiso patiesiibas atklaajeeju.
 

 

Parādi man, kurā pitona dialektā tu vari spraust ASM iekšā ?

Link to comment
Share on other sites

Raimonds1

Labāk mēģinam koncentrēties uz to, vai maz ir iespējams cilvēkam no malas, kādam noliktavas operatoram, piemēram, izskaidrot pointera jedzienu vispār un konkrēti šo uzlabojumu.


 

 

daudzas lietas, kas paliek stipri ērtākas un rezultātā ir jāraksta mazāk kods, lai panāktu to pašu rezultātu. Piemēram, ja lietojam objektu, kuram ir nenosākams lifetime, tad varam nevis čekot referenču skaitu ar roku, varam ielikt objektu iekš std::shared_ptr<>, un to visu darīs tavā vietā.

Tādam  kas nekā nezin par programmēšanu, vieglajā valodā - labāks izaicinājums, nekā vienam otru likt pie vietas.

 

 

Es, nebūdams programmētājs, iesaku Raimondam Pirmajam apgūt datu pierakstu 21-nieku sistēmā ar burtiem... trim ... X, Y un vēl ar vienu kiriļicā (nu vai kaut utf kodējumā - H, U un J). JAU PAŠĀ MĀCĪBU SĀKUMĀ.

 

trijnieku sistema ir kīniešu parmaiņu grāmatas idzin pamatā

 

elektornikā arī ir trijnieku sistēa, 0,1 un ne 0, ne 1, kad tranzistora kolektora izvads nav savienots ne ar barošanas plusu, ne zemi. Tur ir šādas tādas papildus iespējas, kas nav binārajai.

________________

 

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.

 

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.
Labots - Raimonds1
Link to comment
Share on other sites

Nevertell, vai Tu no mammas gules esi atsleegts, vai?

 

Protams, konstrukcija:

 

10 go to 100

 

100 mov a,b

 

 

pitonaa nav piejama. Bet,cik esmu darbojies ar OpenCV ieksj Pitona, tad pieredze liecina, ka importeejams Pitonaa ir viss. Ja dikti gribas, lieto Pyasm.

Link to comment
Share on other sites

Raimond1, es neesmu tolerants un pieklājīgs, tāpēc jautāšu tieši - Tu esi dolbajobs vai izliecies? Kāds kolektora izvads? Z stāvoklis tiek nedaudz citiem mērķiem elektronikā izmantots. Tu savu procesoru arī būvēsi, kurš strādās pēc Taviem "inteliģentajiem" algoritmiem? Ja šo laiku būtu pavadījis paņemot kādu grāmatu par c un ieinstalējot kaut vai to pašu Visual Studio (par brīvu) nevis dzinis tupu filozofiju n-to lappušu garumā, jau sen zinātu, kas ir pointeri. Un nebūtu jāfilozofē par noliktavu operatoriem... kuriem, starp citu, darba specifikas dēļ, pointeru tēma pielektu ļoti ātri.

Link to comment
Share on other sites

Raimonds1

Mana klasifikācija forumā nelauj atbildēt ar to pašu. Tādēļ atturēšos no atbildes.

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

Nu skaidrs, ka Tava atbilde būs klaviatūras caureja vēl 448 lappušu un kādu piecu gadu garumā, bet pointeri kur bijuši tur arī paliks.

Link to comment
Share on other sites

Raimonds1

Jau kadu piekto reizi - es esmu pieteicies C++ un Pascal kursos un pildu mājasdarbus.

Jautājums bija klasificētam biedram Nevertell - vai viņš var izskaidrot C++ jaunievedumus.

Link to comment
Share on other sites

nevertell
pitonaa nav piejama. Bet,cik esmu darbojies ar OpenCV ieksj Pitona, tad pieredze liecina, ka importeejams Pitonaa ir viss. Ja dikti gribas, lieto Pyasm.

NodeJS un Javā ar var rakstīt iekš ASM, vienkārši importē C bibliotēku :> Lispā ar noteikti var.

 

Jaunievedumi pārsvarā ir jauni keyword'i un konstrukcijas sintaksē (lambdas), un jaunas fīčas iekš standarta bibliotēkas. Ir arī jaunas fīčas sakarā ar labās un kreisās puses referenču "notveršanu", kur tu vari piesaistīt kādu vērtību konkrētam mainīgajam konkrētai vērtībai (labās puses vertību) vai piesaistīt referencei (kreisās puses vērtību), tādejādi ja referenci pārraksta, notvertais mainīgais arī rādīs uz 'jauno' vērtību. Pārsvarā tas ir svarīgi tikai rakstot lambdas funkcijas. Par šo visu tu vari uzzināt vairāk palasot dažnedažādus rakstus par C++. 

Labots - nevertell
Link to comment
Share on other sites

Raimonds1
Piemēram, ja lietojam objektu, kuram ir nenosākams lifetime, tad varam nevis čekot referenču skaitu ar roku, varam ielikt objektu iekš std::shared_ptr<>, un to visu darīs tavā vietā.

 

Šito nevar kaut kā vieglāk izskaidrot.

Te https://msdn.microsoft.com/en-us/library/bb982026.aspx

Ir šādi jēdzieni - Parameters

 
Ty The type controlled by the shared pointer.
Other The type controlled by the argument pointer.
ptr  The pointer to copy.
The type of the deleter.
The type of the allocator.
dtor  The deleter.
alloc  The allocator.
sp  The smart pointer to copy or move.
wp  The weak pointer to copy or move.
ap  The auto pointer to copy or move.
up The unique pointer to move.
Cik saprotu, stāsts ir par atmiņu, izdalītiem apgabaliem un manipulāciju ar to apgabalu atrašanas/atrašanās vietām. Kaut ka nevis specifiski programmētājiem saprotami, bet ar noliktavas plauktiem vai bibliotekāra pastāstu, kad kur ko nest un kam dot un kā apzīmēt.
 
Kas tie ir par datiem un mainīgajiem, ar ko strādā, kaut kas grāmatvedisks, tehniska failu apstrade, kaut kāda viena veida failu konvertācija par citiem, kaut kāda datu straume, kas ir organizēti pareizi jāpadod.tālāk vai jāglabā. Kas ir rezultāts - kaut kāds teksts izejā vai labi pārskatāmi sakārtoti dati, datu šķirošana, dati, kas ir pieejami pēc pirmā pieprasījuma un ērti organizēti, kas tas viss ir un kur to parasti lieto.
 
Kas bija jādara, pirms tas tika ieviests?
 
Palasīju vēl te https://en.wikipedia.org/wiki/Smart_pointerun tur no katra teikuma seko atsauces uz skaidrojamiem jēdziniem, piemeram, šo  https://en.wikipedia.org/wiki/Abstract_data_type un šo https://en.wikipedia.org/wiki/Data_structure
Tik daudz es uztveru, ka vieni datu tipi attiecas uz un domāti ir domāti lietotājam, otri - izstrādātājam un ieiviesējam, bet skaisti praktiski piemēri to visu lielo kopainu padarītu daudz skaidrāku. Ar praktiski es te saprotu skaidorjumu, tipa - problēma/iuzdevums ir šādi, līdz šim tos risināja tā, tagad ar šo jauninājumu to var atrisinat šādi, izmantot tādiem un šitādiem datiem, lieto tādus mainīgos, stringus, masīvus, utt.
 
 
 
Ja tas skaidrojums izdotos pietiekami vienkāršs, tad būtu labi.
Labots - Raimonds1
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. Bet šis virziens neko daudz nedod.

CPU nestrādā ar bitiem. CPU strādā ar "bitu grupām". Faktiski gadījumā, ja vēlies vienā baitā glabāt vairākas vērtības, katru aprakstot ar atsevišķiem baita bitiem, šīs "vērtības" apstrāde (nolasīšana, ierakstīšana, salīdzināšana utt) prasīs vairāk resursu nekā tad, ja "vērtībai" atvēlētu visu baitu.

Tas gan nenozīmē, ka datorā nekad neizmanto vienu baitu (vai integeri) vairāku vērtību saglabāšanai. Piemēram, ir tāds jēdziens "flag", kas ir viena bita vērtība, un vairākus "flagus" nereti glabā vienā 32bit mainīgajā.

Tāpat reizēm gadās situācijas, kad vajag "ļoti daudz booleanus". Iepriekš aprakstīju piemēru - gadus 15 atpakaļ pārejot no booleanu masīva uz bitiem, samazināju atmiņas patēriņu no 16MB līdz 2MB un algoritma izpildes laiks samazinājās no 800ms līdz 15ms. Toreiz vajadzēja ~16 miljonus "booleanu". Bet tā nekādā gadījumā nav ikdienišķa situācija. Ikdienišķās situācijās tāda "optimizēšana" visu padarīs tikai sliktāku - nelasāmāku, lēnāku, sarežģītāku, kļūdaināku.

 

 

 

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.

Tā ir TAVA pieredze, TAVA vide, TAVA ikdiena. Kaut kā tā sanāk, ka parasti cilvēkam apkārt pulcējas viņam līdzīgi cilvēki. Kaut kā no tiem "citādajiem" protam veiksmīgi izvairīties.

Arī es pelnu naudu ar programmēšanu. C, C++ - tās ir reāli ikdienā vajadzīgas lietas. ASM - arī vajadzīga, bet retāk. Un visiem standartiem maksimāli atbilstošs kods - bez tā nu nekādi. Nēnu labi, reizēm nākas atkāpties no standartiem, jo, kad vienu kodu jākompilē ar visdažādākajiem kompilatoriem uz visdažādākajām platformām, pilnīgi noteikti būs jāsaskaras ar kompilatoru gļukiem - tur nu var nākties atkāpties no standartiem. Bet standartu pārzināšana un ievērošana ilgtermiņā ļauj šādas situācijas samazināt līdz minimumam. Un jā, ar to kodu tak jāspēj strādāt nevis atsevišķam diletantam, bet komandām dažādās pasaules malās un reizēm pat dažādos uzņēmumos, kur katrā uzņēmumā ir savas vadlīnijas (šobrīd kā reiz pie tāda projekta strādāju).

 

 

 

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?

 

 

Un tā mana pieeja ir tāpēc, ka es gribu saprast, kāpec šī lieliskā, portablā, spēcīgā un sskaistā valoda netiek apgūta tik labi, kā vajadzētu.

Ir tāds teiciens, "katram savs".

 

 

 

Nu lūk. Vienīgais piejamais aparāts (neskaitot "garāžā" salodēto, no radiožurnāliem noskatīto kaut kādu mikro 80 ar 2Kb Basic) bija ZX, kura Basic nebija labs. Toties bija tam verķim Pascal ar labu kompilatoru. Kompilators ļāva iekļaut tekstā mašīnkodu. Jau tad. Bija arī kaut kāds C kompilators, bet tik traki jēls, ka negribas pat atcerēties.

ZX tak arī "garāžā" lodēja no radiožurnālos noskatītā :D "Garāža" gan izpaudās kā darba galts, kurš atrodas viesistabā, kura reizē ir arī senču guļamistaba, dzīvojamā istaba un vispār centrālā telpa visā dzīvoklī. Atceros, kaut kas senča salodētajā ZXā nestrādāja kā nākas - nesa uz kaut kādu darbnīcu, bet tur meistari nespēja noteikt, kas par vainu. Nu neko, sencim nekas cits neatlika kā pašam atrast vainu un salabot.


 

 

Šito nevar kaut kā vieglāk izskaidrot.

Pirms sāc pētīt shared un smart pointerus, vispirms nāksies saprast, kas tas pointeris tāds ir.

Link to comment
Share on other sites

Raimonds1

Es pašlaik pētu iespēju šos konceptus skaidrot viegli.

 

https://en.wikipedia.org/wiki/Pointer_%28computer_programming%29

As an analogy, a page number in a book's index could be considered a pointer to the corresponding page; dereferencing such a pointer would be done by flipping to the page with the given page number.

 

Šajā līmenī, pagaidām neejot iekšā programmas rakstīšanā - pointeris ir salīdzināms ar lapas norādi satura rādītājā. Pēc loģikas sanāk, ka kādam tas satura rādītājs ir jāuzraksta, jānorāda, kur to atrast, jānorada lappuse un jāātrod dati, kas tur ir, kaut kas ar tiem jāizdara - jākopē, jāparsūta, jāparraksta, jāizdzēš, jāatbrīvo atmiņa utt.


Man loģiskā secība būtu - vispirms šāda veida zināšanas un tikai tad programmas rindas un katras rindas izprašana, ko ta dara.


Pašlaik, tas ko es nesaprotu un gribu uzzināt, ir, kas tie ir par datiem, ko šādi apstrādā - kaut kādi grāmatvedības starprezultāti, failu konvertācijas gaitā iegūtie vaajdzīgie un nevajadzīgie baiti, kilobaiti un megabaiti, kaut kadas pieejas prioritātes programmas vai kas.


 

 

Raimonds1, 22 Apr 2016 - 21:44, teica: 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.

 

CPU nestrādā ar bitiem. CPU strādā ar "bitu grupām". Faktiski gadījumā, ja vēlies vienā baitā glabāt vairākas vērtības, katru aprakstot ar atsevišķiem baita bitiem, šīs "vērtības" apstrāde (nolasīšana, ierakstīšana, salīdzināšana utt) prasīs vairāk resursu nekā tad, ja "vērtībai" atvēlētu visu baitu. Tas gan nenozīmē, ka datorā nekad neizmanto vienu baitu (vai integeri) vairāku vērtību saglabāšanai. Piemēram, ir tāds jēdziens "flag", kas ir viena bita vērtība, un vairākus "flagus" nereti glabā vienā 32bit mainīgajā. Tāpat reizēm gadās situācijas, kad vajag "ļoti daudz booleanus". Iepriekš aprakstīju piemēru - gadus 15 atpakaļ pārejot no booleanu masīva uz bitiem, samazināju atmiņas patēriņu no 16MB līdz 2MB un algoritma izpildes laiks samazinājās no 800ms līdz 15ms. Toreiz vajadzēja ~16 miljonus "booleanu". Bet tā nekādā gadījumā nav ikdienišķa situācija. Ikdienišķās situācijās tāda "optimizēšana" visu padarīs tikai sliktāku - nelasāmāku, lēnāku, sarežģītāku, kļūdaināku.

 

Un ko pamatojas vairākkodolu procesori - tie katrs ņem visu garo blāķi kaut kādā secībā un loģikā vai arī ir paredzēta iespēja strādāt ar īsiem fragmentiem un katrs kodols dabū savu?

Labots - Raimonds1
Link to comment
Share on other sites

 

 

Šajā līmenī, pagaidām neejot iekšā programmas rakstīšanā - pointeris ir salīdzināms ar lapas norādi satura rādītājā. Pēc loģikas sanāk, ka kādam tas satura rādītājs ir jāuzraksta, jānorāda, kur to atrast, jānorada lappuse un jāātrod dati, kas tur ir, kaut kas ar tiem jāizdara - jākopē, jāparsūta, jāparraksta, jāizdzēš, jāatbrīvo atmiņa utt.

Jo abstraktākas analoģijas meklē, jo dziļāk purvā. Pointers ir atmiņas adrese, ko tur nesaprast.  Atver Excel tabulu un apskaties uz viņu, piemēram C13 tev būs addresse, kurā tu kautko vari ierakstīt. Tas kas tani ailē ir ierakstīts ir dati.

 

 

 

Un ko pamatojas vairākkodolu procesori - tie katrs ņem visu garo blāķi kaut kādā secībā un loģikā vai arī ir paredzēta iespēja strādāt ar īsiem fragmentiem un katrs kodols dabū savu?

Nē vairākkodolu procesori neizpilda vienu programmu vienlaicīgi, bet katrs savu. (threadi būs izņēmums). Ja tev ir 4 kodoli, tad uz viena ies Excel, uz nākamā Chrome utt. Ja ir tikai viena programma kuru izpildīt, tad viens kodols strādās, pārējie pīpēs. Ko kuram kodolam darīt nosaka operātājsistēma, jeb precizāk viņas Scheduler, bet tev līdz tam vēl kādi 15 gadi.   

Link to comment
Share on other sites

@@AndrisBB, vispirms tu nopel analoģijas, pēc tam pats runā analoģijās :D Tas piemērs ar exceli ir tik pat truls kā piemērs ar grāmatu.

Pointeris nav gluži atmiņas adrese. Pointeris ir datu tips. Pointera vērtība - tā, lūk, ir atmiņas adrese. Un arī pie tā visi prieki ar pointeriem (u.c. datu tipiem) vēl nebeidzas :pooh_honey:(piemēram, kur glabājas adrese uz pointera vērtību?)

Labots - binary
Link to comment
Share on other sites

Un ko pamatojas vairākkodolu procesori - tie katrs ņem visu garo blāķi kaut kādā secībā un loģikā vai arī ir paredzēta iespēja strādāt ar īsiem fragmentiem un katrs kodols dabū savu?

kā uztaisi, tā arī ir. Izvēlies, ko vēlies, skaties, ko izvēlējies.

 

vari pat dalīt darbus dažādiem datoriem. JA un tikai JA esi paredzējis, kā tas varētu notikt:

https://estudogeral.sib.uc.pt/bitstream/10316/14345/1/WMPI%20Message%20Passing%20Interface%20for%20Win32%20Clusters.pdf

vai

https://en.wikipedia.org/wiki/Beowulf_cluster#Operating_systems

 

viens dators no 100 neko nezina par pārējiem. Ja ir miljons skaitļu, kam rēķināt kvadrātā kāpināšanas summas - iedali 10'000 skaitļu porciju katram, un kad tas katrs būs porciju pabeidzis UN saskaitījis, atgriezīs "māsteram" kvadrātu summu. Vienkāršs, dalāms algoritms, minimāla sinhronizācija.

Labots - usver
Link to comment
Share on other sites

 

 

@AndrisBB, vispirms tu nopel analoģijas, pēc tam pats runā analoģijās Tas piemērs ar exceli ir tik pat truls kā piemērs ar grāmatu.

Nu labi nav tas labākais piemērs, vienkārši Excels fonā rēgojās

 

 

 

(piemēram, kur glabājas adrese uz pointera vērtību?)

objdump un pēti, kur kas glabājas :scenic:  

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...