Raimonds1 Aprīlis 25, 2016 Author Share Aprīlis 25, 2016 Doma bija par to, ka cietais disks visiem kodoliem ir viens, un, ja kāda info ir nevis 32 vai 64 bitu liela, bet īsāka, piemēram, 8 bitu, vai tiek kodoli var paņemt no tā garā 64 bitu blāķa katrs savu posmu un reizē apstrādāt, bet šitas ir blakusnovirziens. Kāpec Jums nepatīk analoģijas, ņemam to grāmatas saturu un lappuses ka pamatu par pointeriem un izvēršam jauno C++ papildinājumu skaidrošanai. 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. Pointeru aprakstam var izvēlēties analoģijas no vecās pieejas, kad tos izdomāja un no jaunas, augstāka līmeņa konstrukciju pieejas un tas ir vēl jautājums, kurš variants ir labāks, lai izmantotu parastos ikdienas sadzīves teikumus, lai vieglāk saprastu. Ja iespējams, ar problēmas risinājumu aprakstu - dati nāk blāķiem vien, kaut kur viņi jāliek, jāapstrādā, cik to būs, nav zināms, agrāk ar C darīja tā, bet tagad ar jaunajiem papildinājumiem C++14 un C++17 standartiem dara šitā. Link to comment Share on other sites More sharing options...
binary Aprīlis 25, 2016 Share Aprīlis 25, 2016 Kāpec Jums nepatīk analoģijas, ņemam to grāmatas saturu un lappuses ka pamatu par pointeriem un izvēršam jauno C++ papildinājumu skaidrošanai.Kaut vai tāpēc, ka analoģijas kropļo izpratni par pamatlietām un nekādā veidā nepaātrina patiesas izpratnes gūšanu par to, kas ir kas, kas kā strādā, kāpēc tas strādā utt utjp. Turklāt uz analoģijām balstītas zināšanas ir ierobežotas ar izpratni par analoģijām un to iespējām. Bet nu… Katram savs. Kamēr vieni "divdimensiju masīvus" izprot tikai tad, kad šos masīvus iztēlojas kā daudzstāvu mājas logus, tikmēr citam daudz vienkāršāk ir "2D masīvu" iedomāties kā "1D masīvu, kura indekss tiek aprēķināts, pareizinot vienu indeksu ar konstantu skaitli un pieskaitot otru indeksu"… Vai arī kā "1D masīvu, kura vērtības ir adreses uz citiem 1D masīviem"… Nu jā, te nu atkal rodas tie ierobežojumi - kamēr pirmajiem viss apstājas pie "mājas logiem", tikmēr tie otrie jau kopš sākta gala zina atšķirību starp abām minētajām 2D masīvu reprezentācijām ar 1D masīvu palīdzību… Link to comment Share on other sites More sharing options...
AndrisBB Aprīlis 25, 2016 Share Aprīlis 25, 2016 Doma bija par to, ka cietais disks visiem kodoliem ir viens, un, ja kāda info ir nevis 32 vai 64 bitu liela, bet īsāka, piemēram, 8 bitu, vai tiek kodoli var paņemt no tā garā 64 bitu blāķa katrs savu posmu un reizē apstrādāt, bet šitas ir blakusnovirziens. Apsolos šinī tēmā vairs nerakstīt Link to comment Share on other sites More sharing options...
Raimonds1 Aprīlis 25, 2016 Author Share Aprīlis 25, 2016 Nē, vairākkodolu procesori neizpilda vienu programmu vienlaicīgi Nevis vienu programmu, bet no viena garā 64 bitu blāķa ņemtos datus vienlaicīgi. Katrs savus datus. Link to comment Share on other sites More sharing options...
usver Aprīlis 25, 2016 Share Aprīlis 25, 2016 (labots) Doma bija par to, ka cietais disks visiem kodoliem ir vienscpu? ja kāda info ir nevis 32 vai 64 bitu liela, bet īsāka, piemēram, 8 bitu, vai tiek kodoli var paņemt no tā garā 64 bitu blāķa katrs savu posmu un reizē apstrādāt asm komandas paskaties. tik ļoti platoniski fano par efektivitāti, ka brīnos, ka neesi sācis vispār ar to. 9 mēnešu laikā 1. kursā (un pēc tam vasarā) paspēju apgūt c++ pamatus, uztaisīt aplikācijas (win32 API GUI, WinSock, MFC) - bija pat GUI lokālā tīkla čats + failu pārsūtīšana. Un vasarā vēl paspēju apgūt asm pamatus (tai skaitā - ar win32 api) un programmu krakošanas pamatus, kas gan nav bijuši vajadzīgi daudzus gadus, bet bija ļoti interesanti. Lūk, tur asm ļoti labi parāda, ka pamatkomandas .386 ir tādas - ņem vienu kaut ko, ņem otru kaut ko, veic darbību, saglabā rezultātu iekš eax - piemēram. Ja vari sakombinēt 2 baitus vienkopus (AH, AL) un veikt, teiksim, XOR ar tādiem pašiem 2 sakombinētiem baitiem (BH, BL), tad nevajadzēs veikt XOR divreiz (katram baitu pārim atsevišķi). 32-bit asm ar cpu reģistriem: http://www.cs.virginia.edu/~evans/cs216/guides/x86.html Akurāt reizē diez vai sanāks apstrādāt - jo viss noreducējas uz asm, un tur kodolam "darīt reizē" dažādus nesaistītus darbus nav reāli. Jo dažādiem trediem sinhronizācija un gaidīšana, kad drīkstēs veikt kādu kopīgu kombinētu darbību, no kā visiem būtu labums, aizņemtu vairāk laika, nekā no tās matu skaldīšanas būtu jēga. aptuveni kā autobusi - teorētiski visi varētu braukt vilcieniņā, samazinot gaisa pretestību un tādējādi ietaupot degvielu, bet tā kā katram ir savs maršruts, tad praksē autobusi brauc katrs kur tam vajag, nevis gaida, kad drīkstēs pabraukt vilcieniņā, samazinot gaisa pretestību. Labots Aprīlis 25, 2016 - usver Link to comment Share on other sites More sharing options...
Raimonds1 Aprīlis 25, 2016 Author Share Aprīlis 25, 2016 Apsolos šinī tēmā vairs nerakstīt Būs labi, es sākšu uzdot aizvien gudrākus jautājumus Link to comment Share on other sites More sharing options...
camel Aprīlis 25, 2016 Share Aprīlis 25, 2016 (labots) @@Raimonds1, Kas tieši tev nav saprotams par pointeriem (un bitiem)? Paskaidro tā lai visiem būtu saprotams. Piemēram, uzraksti koda fragmentu (no tutoriāļiem, ...), ko tu nesaproti. Pointeru (un bitu) funkcionalitāti un jēgu pilnībā var izskaidrot ar tiem pāris operatoriem un to pielietojuma piemēriem. Ja tev tos neizdodas apgūt, varbūt jāizvēlas cits hobijs, piemēram, tamborēšana. Labots Aprīlis 25, 2016 - camel Link to comment Share on other sites More sharing options...
Raimonds1 Aprīlis 25, 2016 Author Share Aprīlis 25, 2016 (labots) Raimonds1, 25 Apr 2016 - 11:14, teica: Kāpec Jums nepatīk analoģijas, ņemam to grāmatas saturu un lappuses ka pamatu par pointeriem un izvēršam jauno C++ papildinājumu skaidrošanai. Kaut vai tāpēc, ka analoģijas kropļo izpratni par pamatlietām un nekādā veidā nepaātrina patiesas izpratnes gūšanu par to, kas ir kas, kas kā strādā, kāpēc tas strādā utt utjp. Turklāt uz analoģijām balstītas zināšanas ir ierobežotas ar izpratni par analoģijām un to iespējām. Nu to Tu nemaz nevari tik droši apgalvot tā uzreiz. Kas tieši tev nav saprotams par pointeriem (un bitiem)? Paskaidro tā lai visiem būtu saprotams. Piemēram, uzraksti koda fragmentu (no tutoriāļiem, ...), ko tu nesaproti. Šis Kur tie ir? Paskat, kāds angliski labs materiāls, šo to pat saprotu EDIT!: (gandrīz visu (verbāli, ne sintaksē) - vecais variants) http://www.cprogramming.com/tutorial/c/lesson6.html Ja var palūgt, pāris piemerus, kā tiek realizēts šajā rindkopā rakstītais - Pointers are aptly name: they "point" to locations in memory. Kā dabū šito - A pointer in the world of safety deposit box would simply be anything that stored the number of another safety deposit box. un šo - but decided to put the real location in another, smaller, safety deposit box that only stored a card with the number of the large box with the real jewelry. Ko tad, ja ir vairāk ko glabāt - If you happen to have a huge piece of data that you want to pass into a function, it's a lot easier to pass its location to the function than to copy every element of the data! Un šo rindkopu pilnībā ar piemeru pa rindiņām, ja var - A note about terms: ..... Labots Aprīlis 25, 2016 - Raimonds1 Link to comment Share on other sites More sharing options...
binary Aprīlis 25, 2016 Share Aprīlis 25, 2016 @@Raimonds1, es daudz ko varu. Un daudz ko daru. Link to comment Share on other sites More sharing options...
Jurkins Aprīlis 25, 2016 Share Aprīlis 25, 2016 (labots) Būs labi, es sākšu uzdot aizvien gudrākus jautājumus Šitas ir labais!!! Kamēr būs Raimonds1, jautrība nodrošināta. Labots Aprīlis 25, 2016 - Jurkins Link to comment Share on other sites More sharing options...
camel Aprīlis 25, 2016 Share Aprīlis 25, 2016 Par ko tad bazars, ja gandrīz visu saproti? Atkārtošos vēlreiz, pointerus, tāpat kā visko citu, var iemācīties pētot pielietojuma piemērus un scenārijus - konkrētus koda fragmentus. Ja tev, kas nav skaidrs, ieraksti te koda fragmentu, ko nesaproti, varbūt kāds tev varēs palīdzēt - bez jebkādas filozofēšanas. Link to comment Share on other sites More sharing options...
LPC Aprīlis 25, 2016 Share Aprīlis 25, 2016 Atkārtošos vēlreiz, pointerus, tāpat kā visko citu, var iemācīties pētot pielietojuma piemērus un scenārijus - konkrētus koda fragmentus. Ja tev, kas nav skaidrs, ieraksti te koda fragmentu, ko nesaproti, varbūt kāds tev varēs palīdzēt - bez jebkādas filozofēšanas. Žēl, ka tu tā arī neesi pamanījis - topika autors nav 9 mēnešu laikā nav uzrakstījis un arī negrasās uzrakstīt nevienu rindiņu koda mērķis tak ir pavisam cits - spriedelēt par C++ tuvumu dzelžiem, C++ tutoriāļu trūkumu, izglītības sistēmas un jauniešu motivācijas problēmām. Kā arī - pašlaik zinam galveno problēmu, kurai ceram rast risinājumu jau drīzākajā laikā - procesoru ražotāji diemžēl 32 bitu un pat 64 procesoros iebūvē tikai 1 cieto disku 2 Link to comment Share on other sites More sharing options...
Raimonds1 Aprīlis 25, 2016 Author Share Aprīlis 25, 2016 (labots) 20 // more pointers#include <iostream>using namespace std; int main () { int firstvalue = 5, secondvalue = 15; int * p1, * p2; p1 = &firstvalue; // p1 = address of firstvalue p2 = &secondvalue; // p2 = address of secondvalue *p1 = 10; // value pointed to by p1 = 10 *p2 = *p1; // value pointed to by p2 = value pointed to by p1 p1 = p2; // p1 = p2 (value of pointer is copied) *p1 = 20; // value pointed to by p1 = 20 cout << "firstvalue is " << firstvalue << '\n'; cout << "secondvalue is " << secondvalue << '\n'; return 0; } http://www.cplusplus.com/doc/tutorial/pointers/ http://www.cplusplus.com/doc/tutorial/pointers/ Šajā piemērā - šo izteikumu īsti nesaprotu - Notice that there are expressions with pointers p1 and p2, both with and without the dereference operator (*). The meaning of an expression using the dereference operator (*) is very different from one that does not. When this operator precedes the pointer name, the expression refers to the value being pointed, while when a pointer name appears without this operator, it refers to the value of the pointer itself (i.e., the address of what the pointer is pointing to). 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. Kāpēc nemācījies tālāk? Labots Aprīlis 25, 2016 - Raimonds1 Link to comment Share on other sites More sharing options...
Inspektors Caps Aprīlis 25, 2016 Share Aprīlis 25, 2016 Biedrs usver jau kā tipisks modernais pseidospecs - mācīt citus kā "pareizi" dzīvot jeb laist ļer-ļer-ļer par beztēmu māk, tikai programmēt nemāk. Ja to ļer-ļer-ļer laiku veltītu programmēšanai, tad vismaz zinātu tās pamatus. Lai citiem no malas ir skaidrs tas, ar cik lielu blīkšķi Tu izgāzies, pateikšu analoģijās. Piemēram, cilvēks stāsta, ka ir augstākās matemātikas profesors, bet tad uzraksta tādu lažu, kas atklāj, ka viņš nemaz nesaprot visparastāko reizināšanu. Protams, priekš kritiski domājošiem cilvēkiem viņa kredibilitāte momentā nokrīt atpakaļ pamatskolas līmenī un nevienu normālu matemātiķi vairs neinteresē viņa viedoklis ne par diferenciālvienādojumiem, ne par varbūtību teoriju. Bet atzīt, ka lietu nejēdz, modernie mākslīgi piepumpētā tukšā self-esteem balona "speciālisti" nespēj, tādēļ mēģina visiem iestāstīt, ka reizināšana esot kaut kāda baigā smalkā optimizācija un specializācija. Nē, vecīt, tie ir pamatu pamati, un, ja Tu tos nejēdz, tad Tu esi diletants! Un tad šis bufera padošanas piemērā liek priekšā JNI, kas ir Java datu kopēšana uz C/C++ kompilētu daļu, lai tur apstrādātu, un tad kopēšana atpakaļ. Cik ironiski - Java to "varot"... paprasot to izdarīt C/C++. Kārtējo reizi pierādās, ka spēt saprast lietu un sarunas būtību mūsdienu koderim ir kaut kas pilnīgi netverams. Runa taču bija par japeta pausto domu, ka visas tās valodas funkcionāli ir vienādas un atšķiras tikai sintakse. Tādēļ arī jautājuma būtība bija par valodu - kā Java kodā masīvu vai struktūru var padot starp programmas dažādām koda daļām tā, lai tie nav jākopē un var mainīt to saturu? C/C++ to var izdarīt vieglāk par vieglu - padodot pointeri, kas tiešām nenoslogo faktiski necik! Neesmu Java eksperts, bet, cik zinu, tad tas nav iespējams. Pareizi? Ko tev dod matu skaldīšana un tīksmināšanās ap mikrosekundēm? Tīksmināšanās tā ir tikai Tev ap tā "kritiku", jo Tu neko tālāk par savu smilšu kasti neredzi. Apsēdies, pirms lasi šo šokējošo ziņu - iedomājies, pasaulē bez grāmatvežu skaitlīšiem un līkām web sistēmām eksistē arī citas lietas, kas ir jāprogrammē! Ir jāizstrādā dažādu ražošanas iekārtu vadības sistēmas, drošības sistēmas, eksperimentālas iekārtas un prototipi, dažādi sensori ar visdažādāko perifēriju, specializētu barošanas bloku vadības, dažādu motoru, gaismu vadības u.c. Tas viss ar visdažādāko ātrdarbību, izmēru, masu, fizisko, mitruma, temperatūras izturību un elektrības patēriņu. Daudzās no tām ir svarīgas ne tikai sekundes, bet arī milisekundes, mikrosekundes un dažās pat nanosekundes. Jā, Tava smilšu kaste nav visa pasaule... kas to būtu domājis, ne? 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. Šeit tieši tāda pati aprobežotība. Cilvēks vienkārši nespēj saredzēt pasauli ārpus savas ikdienas vides, jo nespēj iedomāties, ka ne tuvu ne visur var pielikt lielu datoru ar lielu OS. Bez ātrdarbības viņš laikam nespēj iedomāties arī tādus kritērijus kā fiziskie parametri, elektrības patēriņš un uzticamība. Arī cena viņa pasaulē ir tikai tūkstošos, bet reālajā dzīvē daudz iekārtām ir kritiski svarīgi būt ļoti lētām, uz leju līdz pat dažiem eiro. Vajadzības var būt visdažādākās - jāietilpst sērkociņu kastītē, jāspēj mērīt nanosekundes, strādāt gadu no CR2032 "tabletes" baterijas, startēties milisekundēs, strādāt -30..+80 C grādos mitrumā āra apstākļos, spēt strādāt "mūžīgi" (īpaši attiecas uz programmatūru) utt. Mežaveča pasaulē to visu laikam var atrisināt pieliekot "mini" PC ar milzīgu OS, Java programmu un gan jau kaut kādu XML datu formātu... Un tad šādi šauri domājoši tipi man pārmet to, ka es it kā visur bāžot vienu risinājumu. Attopieties - Jūs esat tie, kuri ir ieplijušies tēmā par C un dzelžu programmēšanu, un smirdināt par to, ka "Java arī to var", kaut patiesībā Java tas by design nav iespējams. 1 Link to comment Share on other sites More sharing options...
Raimonds1 Aprīlis 25, 2016 Author Share Aprīlis 25, 2016 Kā arī - pašlaik zinam galveno problēmu, kurai ceram rast risinājumu jau drīzākajā laikā - procesoru ražotāji diemžēl 32 bitu un pat 64 procesoros iebūvē tikai 1 cieto disku Tas galīgi nebij tas ko es tur jautaju. Tas, ko es jautāju bija - ja reiz procesors vienkodola variantā, kā man teica zinošākais biedris, strāda ar visu garo datu blāķi un nekādus 2 bitus nesalīdzina, tad , mans jautājums bija, kā tas ir, ja ir vairākkodolu procesors - vai tad arī katrs no tā kodoliem strādā ar visu garo datu blāķi, jeb ir paredzēta iespēja katram kodolam strādāt ar gabalu no tā garā 32 vai 64 blāķa. Iespējamās atbildes - jā ir tādas iespējas, nē, nav tādu iespēju, es nezinu, vai kaut ko tādu dara un vēl kaut kāda atbilde. Link to comment Share on other sites More sharing options...
usver Aprīlis 25, 2016 Share Aprīlis 25, 2016 (labots) Tīksmināšanās tā ir tikai Tev ap tā "kritiku", jo Tu neko tālāk par savu smilšu kasti neredzi. Apsēdies, pirms lasi šo šokējošo ziņu - iedomājies, pasaulē bez grāmatvežu skaitlīšiem un līkām web sistēmām eksistē arī citas lietas, kas ir jāprogrammē! gudrākie no viņiem saprot, ka nav viena universāla rīka visām vajadzībām uztaisi, lūdzu, iekš C snapdragon iekārtas + kameras vadību ar skārienjutīgo ekrānu un smukām animācijām + video strīmošanu + object tracking + klienta aplikācijas 2 populārākajām mobilajām platformām (drīksti 3, ja vēlies) + klientu portālu datu glabāšanai, sinhronizācijai un loginam ar uzņēmuma SSO. Kad aptirsīsies, tad varbūt sapratīsi, ka katrai valodai sava vieta. Vai arī sāksies atrunas "to es nevaru iekš C uztaisīt, tātad tas sūkā pēc definīcijas". edit: pie prasībām, lūdzu, arī GUI video redaktoru (ar pilnu tačskrīna funkcionalitāti, protams, overlejiem), galeriju ar animācijām un visādi citādi izvirtīgu GUI, šārēšanu uz jūtūbi, feisbuku, instagramu ar lietotāja kontu u.c ērtības. Es tā saprotu, ka 4+ platformām visu iekš C nav problēmu uzmaukt, ne? Vai arī vienā kaut ko taisi, un ar to tava pasaulīte aprobežojas? Labots Aprīlis 25, 2016 - usver Link to comment Share on other sites More sharing options...
Raimonds1 Aprīlis 25, 2016 Author Share Aprīlis 25, 2016 Nervozs darbs, Jums, kungi. Link to comment Share on other sites More sharing options...
camel Aprīlis 25, 2016 Share Aprīlis 25, 2016 Šajā piemērā - šo izteikumu īsti nesaprotu Tad tu nevis "gandrīz visu saproti", bet gandrīz neko nesaproti. Pārraksti to piemēru, lai pēc katras rindas izvadās visu mainīgo vērtības, ieskaitot p un *p, un skaities, kas notiekas. Ja tas nepalīdz, tad neviens tev palīdzēt rī nevarēs. Link to comment Share on other sites More sharing options...
Raimonds1 Aprīlis 25, 2016 Author Share Aprīlis 25, 2016 Kur tāds kategorisms? Link to comment Share on other sites More sharing options...
MarisO Aprīlis 25, 2016 Share Aprīlis 25, 2016 (labots) masīvu vai struktūru var padot starp programmas dažādām koda daļām tā, lai tie nav jākopē un var mainīt to saturu? ...Neesmu Java eksperts, bet, cik zinu, tad tas nav iespējams. Pareizi? Javā visi masīvi un objekti tiek padoti ar pointeri. Tie nav jākopē un var mainīt saturu. Cita lieta, ka tā darīt nav labais stils. Es tāpēc vairs javu nelietoju var taču programmēt kādā augstāka līmeņa valodā, kur neko tādu darīt nevar Šajā piemērā - šo izteikumu īsti nesaprotu Tas ir vienkārši : ja p ir pointers (adrese) tad *p ir tas uz ko pointers norāda, Labots Aprīlis 25, 2016 - MarisO Link to comment Share on other sites More sharing options...
Raimonds1 Aprīlis 25, 2016 Author Share Aprīlis 25, 2016 (labots) Abi pointeri p1 and p2 tiek lietoti ar un bez dereferences operatora (*). Programmas rinda ar tā lietošanu ir ļoti atšķiriga no programmas rindas bez tā lietošanas. Ja šis operators ir pirms pointera vārda, tad programmas rinda attiecas uz vērtību (ko glabā kaut kādā adresē, uz ko norāda pointeris) Ja šī operatora programmas rindā nav, tad tā attiecas uz pašu pointeri kā tādu (tātad adresi, uz ko norāda pointeris) Pareizi? MarisO pasteidzās. Labots Aprīlis 25, 2016 - Raimonds1 Link to comment Share on other sites More sharing options...
MarisO Aprīlis 25, 2016 Share Aprīlis 25, 2016 tieši tā Link to comment Share on other sites More sharing options...
Raimonds1 Aprīlis 25, 2016 Author Share Aprīlis 25, 2016 (labots) & is the address-of operator, and can be read simply as "address of" * is the dereference operator, and can be read as "value pointed to by" & kopā ar firstvalue ir operatora adrese? & kopā ar firstvalue ir firstvalue, kuru tikai vēl ievadīs, adrese, jeb pointeris p1? Tas ir tā vieta, kur būs nonākt tam ciparam, ko ievadīs? Labots Aprīlis 25, 2016 - Raimonds1 Link to comment Share on other sites More sharing options...
MarisO Aprīlis 25, 2016 Share Aprīlis 25, 2016 ar & var dabūt pointeri uz kautko int i = 5; int *ptr; ptr = &i; http://www.c4learn.com/c-programming/c-pointer-address-operator/ Link to comment Share on other sites More sharing options...
binary Aprīlis 25, 2016 Share Aprīlis 25, 2016 & kopā ar firstvalue ir operatora adrese? Tev patīk analoģijas? Nu labi - faktiski tavs jautājums ir "vai zieda smarža ir smaržas smarža?" "&" ir operators, tāpat kā vēl vesela čupa nesaprotamu simbolu - "()", "[]", "->", ".", "!", "~", "++", "--", "+", "-", "*", "/", "%", "<<", ">>", "<", "<=", ">", "<=", "==", "!=", "^", "|", "&&", "||", "?:", "=", "+=", "-=", "*=", "/=", "%=", "&=", "^=", "|=", "<<=", ">>=". Kāda vēl operatoram adrese? Link to comment Share on other sites More sharing options...
MarisO Aprīlis 25, 2016 Share Aprīlis 25, 2016 es reiz strādāju projektā, kur bija uzprogrammēta tāda "konstante" Money.ZERO un tad viens uzrakstīja kodu, kas tai izmainīja vērtību, tā "salaužot" visu kodu, kur tā tika lietota Link to comment Share on other sites More sharing options...
Raimonds1 Aprīlis 25, 2016 Author Share Aprīlis 25, 2016 Kompilators, pēc 1 rindas nomešanas un neatkarīgi no - ir tur beigās return 0 vai nav, pateica šitā firstvalue is10 secondvalue is20 """""""""""""""""""""" Process excited with return value 0 Press any key to continue...._ Kāda vēl operatoram adrese? address-of operator adress-of operator iztulkoju kā adress of operator Varēja pacensties uzrakstīt citādi. vienkārši autors visus ir eleganti satrollējis Bez manas līdzdalības Jūs esat starā viens par otru un nekādu domstarpību nav. Link to comment Share on other sites More sharing options...
binary Aprīlis 25, 2016 Share Aprīlis 25, 2016 Varēja pacensties uzrakstīt citādi. Varēja arī nepacensties. Tur viss ir normāli uzrakstīts. Lai arī kā uzrakstītu, vienmēr atradīsies kāds, kurš nespēj saprast. IMHO nav nepieciešams sarežģīt pārējiem dzīvi dēļ tādiem, kuri nespēj saprast. 1 Link to comment Share on other sites More sharing options...
nevertell Aprīlis 25, 2016 Share Aprīlis 25, 2016 (labots) Būs labi, es sākšu uzdot aizvien gudrākus jautājumus Iepriekšējā pieredze rāda, ka jautājumi paliek arvien stulbāki. Kāda vēl operatoram adrese? Acīmredzami, ka autors runā par funkciju pointeri uz atbilstošo operātora implementāciju. Lai varētu palaistuves-laika optimizācijas mašīnkodā, lai spētu effektīvāk izdalīt 64 bitu datu kopu pa 4 kodoliem. Labots Aprīlis 25, 2016 - nevertell 1 Link to comment Share on other sites More sharing options...
MarisO Aprīlis 25, 2016 Share Aprīlis 25, 2016 (labots) es vispār ieteiktu programmēšanu sākt studēt ar SICP https://mitpress.mit.edu/sicp/ nevis ar pointeriem, LOL Labots Aprīlis 25, 2016 - MarisO Link to comment Share on other sites More sharing options...
Inspektors Caps Aprīlis 25, 2016 Share Aprīlis 25, 2016 (labots) Protams, usver vecā plate bezcerīgi lec uz riņķi un tēmai pieslēgties nespēj. Par to piemēru.. Neviens nezin kas tā tāda "Snapdragon iekārta" tāpat kā arī "Pentium iekārta" vai "ARM iekārta" ir gandrīz neko neizsakošas frāzes. Ja vajag ātri uzcept skaistu GUI ar animācijām un visu ko citu, tad var ņemt talkā, piemēram, Qt bibliotēkas, kas ir priekš gandrīz visām platformām. Tas tā, smilšu kastes profesoram zināšanai. Bet vispār man Tev uz to pat nav jāatbild, jo tēma nav par to vai C var vai nevar paveikt Tavus high-level uzdevumus, bet gan par to vai Java var vai nevar paveikt šajā tēmā aktuālos low-level, kur Tu visu laiku izvairies no atbildes. Bet galvenā debilitāte ir tā, ka šis te tips man piedēvē to, ko pats ir vienkārši safantazējis - ka es it kā visur bāžot C. Vai mēs esam Android aplikāciju tēmā un es saku, ka tās vajag rakstīt C? Vai tomēr mēs esam C un dzelžu tēmā, kur japeti, usveri un mežaveči, kuri dzelžus nemaz nav kodējuši, mēģina iebāzt savas Javas un citus šiem mērķiem pilnīgi nederīgus un pat neiespējamus murgus? Nevis es, bet Jūs šeit esat tie, kuri beztēmā smirdina par Java un citiem saviem "universālajiem rīkiem visām vajadzībām"! Un, jā, Mežaveci, sūtīt pa COM portu komandas vai komandēt iekārtu caur gatavu bibliotēku nav dzelžu programmēšana, bet gan koda bibliotēku izmantošana. Pascal nodi*sējiem.. Tas tikai norāda uz Jūsu neobjektivitāti. Pascal kā valoda funkcionāli ir apmēram tik pat spējīga kā C. Sintakse tai ir vairāk verbāla, līdzīgi kā Visual Basic, kas nedaudz kaitina lietpratējus dēļ vairāk teksta, bet toties lieliski palīdz iesācējiem, jo tie teksti palīdz izprast. Plus, piemēram Pascal ir pilnībā nodalīta mainīgo definēšana no izpildāmā koda, kas gan disciplinē, gan arī piespiež saprast, ka dati un algoritms ir divas pilnīgi dažādas lietas - atkal vismaz priekš iesācējiem tas ir tikai pluss. Embarcadero tagad Delphi un C++ Builder vides ļoti labi attīsta - ir ieviests Unicode, 64-bit kompilators, GUI komponentes izmanto vektorus un GPU akselerāciju. Tās ir arī cross-platform un šobrīd jau var kompilēt programmas priekš Windows, Mac OS X, iOS un Android. Arī vienu un to pašu programmu visām platformām! Plus tas viss tiek kompilēts uz native izpildāmo kodu, atšķirībā no .NET CLI un Java brīnumiem. Labots Aprīlis 25, 2016 - Inspektors Caps Link to comment Share on other sites More sharing options...
AndrisBB Aprīlis 25, 2016 Share Aprīlis 25, 2016 (labots) Teicu ka nekomentēšu, bet jautājums @@Inspektors Caps, ko tu domā par Rust valodu? Ir doma mazliet pamācīties un paskaties cik "patīkama" tā valoda ir, kas labāks, kas sliktāks par C. Domā ir vērts sākt? Sāku vienu nelielu projektu, kurš izmanto LPC1768 un FreeRTOS, kurā pāris tāskus varētu uzrakstīt Rust Labots Aprīlis 25, 2016 - AndrisBB Link to comment Share on other sites More sharing options...
Raimonds1 Aprīlis 25, 2016 Author Share Aprīlis 25, 2016 Sintakse tai ir vairāk verbāla, līdzīgi kā Visual Basic, kas nedaudz kaitina lietpratējus dēļ vairāk teksta, bet toties lieliski palīdz iesācējiem, jo tie teksti palīdz izprast. Plus, piemēram Pascal ir pilnībā nodalīta mainīgo definēšana no izpildāmā koda, kas gan disciplinē, gan arī piespiež saprast, ka dati un algoritms ir divas pilnīgi dažādas lietas - atkal vismaz priekš iesācējiem tas ir tikai pluss. Man jau nu pilnīgi noteikti. Uz gatavu produktu orientētiem - produkts ir arī diskusija kā tāda un labāki skaidrojumi par līdz šim pieejamiem. Mēs te varam šos skadrojumus producēt steriem vai arī to nedarīt un kasīties. Kur tad ir tās daudzas kvaliitatīvās diskusijas par C un C++ valodām? Pointeri latviešu guglē ir adreses par suņiem. http://www.latviangundogs.org/new/lv/musu-suni/anglu-pointeri stringi C valodā Kas tas ir, ka kompileris tos vecos piemērus, kas rakstīti kā paraugi, met atpakaļ? Teicu ka nekomentēšu, Man Tavi komenti netraucē. Link to comment Share on other sites More sharing options...
AndrisBB Aprīlis 25, 2016 Share Aprīlis 25, 2016 Lūdzu tev gan lekcijas gan labaratorijas darbi latviešu valodā http://home.lu.lv/~janiszu/courses/courses.html Link to comment Share on other sites More sharing options...
nevertell Aprīlis 25, 2016 Share Aprīlis 25, 2016 Tādēļ arī jautājuma būtība bija par valodu - kā Java kodā masīvu vai struktūru var padot starp programmas dažādām koda daļām tā, lai tie nav jākopē un var mainīt to saturu? C/C++ to var izdarīt vieglāk par vieglu - padodot pointeri, kas tiešām nenoslogo faktiski necik! Neesmu Java eksperts, bet, cik zinu, tad tas nav iespējams. Pareizi? Nepareizi, Javā viss ir pass-by-reference, neskaitot primitīvus. Primitīvus vajag 'aptīt' ar objektu, lai tos varētu padot kā referenci. @@AndrisBB, ja nopietni pieķersies Rūsai, tad brīdinu, ka no sākuma kompilatora īdēšana var baigi izbesīt. Bet nepais daudz laika, kad kompilātors būs kļuvis par tavu labāko draugu. Un par embedētajām sistēmām - skaties uzmanīgi, jo Rūsa ģenerē LLVM bitkodu, tā kā tehniski kods strādās uz visa, ko atbalsta LLVM, taču standarta bibliotēka gluži visam nav vēl sarakstīta. Es rūsā tik vienu nopietnu projektu esmu uzrakstījis, nopietnu nevis funkcionalitātes dziļumā, bet ātrdarbības ziņā. C/C++ tagad vairs gribās aiztikt tikai tur, kur nekas cits vienkārši nav iespējams, i.e. linux kernelis un citas vietas. Link to comment Share on other sites More sharing options...
Raimonds1 Aprīlis 25, 2016 Author Share Aprīlis 25, 2016 Re kur mēģinājuši cilvēciskot C valodu - http://www.rapideuphoria.com Lūdzu tev gan lekcijas gan labaratorijas darbi latviešu valodā http://home.lu.lv/~j...es/courses.html Paldies, paldies. Link to comment Share on other sites More sharing options...
AndrisBB Aprīlis 25, 2016 Share Aprīlis 25, 2016 taču standarta bibliotēka gluži visam nav vēl sarakstīta. A kā ir ja izmanto parastās C redlib vai newlib?, Jo tikuntā nāksies portēt visādus 'read', 'write', 'malloc' utt, neesu pētijis kā portēšana darbojas Rust, bet vismaz ar newlib tas ir vienkārši. Bet atkal jauzmanto C bibliotēkas, tad zūd jēga visam Rust. Kaugan varbūt var pņemt kautko no Rust un kas nedarbojas to no C? Iespējams sarakstiju kautkādu murgu, jo ar Rust vēl neesu pat rindiņu uzrakstijis, varbūt jāsāk uz desktopa Kautkas izskatās tiek darīts lietas labā šinī projektā https://zinc.rs/ Link to comment Share on other sites More sharing options...
nevertell Aprīlis 25, 2016 Share Aprīlis 25, 2016 No rūsas jau droši vari arī izsaukt C funkcijas, un no C vari izsaukt Rūsu. Šeit cilvēks visticamāk zinās labāk -> https://spin.atomicobject.com/2015/02/20/rust-language-c-embedded/ Pats rakstu Rūsu patlaban priekš Andžas, uz desktopa viss sanāk ļoti feini. Link to comment Share on other sites More sharing options...
usver Aprīlis 27, 2016 Share Aprīlis 27, 2016 (labots) Piemēram, cilvēks stāsta, ka ir augstākās matemātikas profesors, bet tad uzraksta tādu lažu, kas atklāj, ka viņš nemaz nesaprot visparastāko reizināšanu. Jau iepriekš rakstīju, ka mana implementācija izpildās korekti (kas ir galvenais), uzlabot varu, bet man nav laika regulāri nakts vidū sēdēt un muldēt, cik visi stulbi vai netraucēti nodarboties ar vaļaspriekiem. kāds tests feiloja? piemēri atgrieza korektas vērtības. neskatoties uz to, ka c++ es padsmit gadus arī neesmu programmējis. uzrakstīju fiksi algoritmu. darba dienas vidū. vidē, ko nelietoju. uzlabot varu, operācijas samazināt varu, mainīgos noīsināt arī. arī inlainā var pierakstīt klāt "optimālāk". bet priekš tā laiks vajadzīgs. Tev, acīmredzot, nepieleca. Joprojām - visi apkārt stulbi, nekā nejēdz, odna ja umnaja, visi lo.hi. Kas rada motivāciju kopš septembra (!!!) nākt un pašrealizēties lamājoties, jo pasaulē taisnības neesot. Tev ir "projekti, algas", bet sajēgas nav Lūk - pirms dažām dienām Raimondam ieminējos par multitredotu aplikāciju (ne)ieguvumiem no reģistru operācijām. Tu atkal sāki nekonstruktīvi psihot, laikam sakarā ar to, ka esmu atļāvies tādas lietas komentēt. Paskatījos bildīti un atcerējos jaunību: Vakar bija laiks pēc darba - bērni veseli, darbā mazliet atelpa. Vakarā aizgāju uz kafejnīcu (mājas programmēties nav iespējams), sporta pēc uzrakstīju kodu, kas bīda bitus. Referencei atstāju tavējo - ar bitwise AND un OR. Asmā tas viss noreducējas uz šiftu caur Carry flag, nekādi AND un OR tur nav patiesībā vajadzīgi. #include <bitset> #include <iostream> using namespace std; unsigned short int rev_opt(unsigned short int given) { unsigned short int returnValue = 0; for (int i=0; i<16; i++) { returnValue <<= 1; returnValue |= given & 1; given >>= 1; } return returnValue; } unsigned short int rev_opt2(unsigned short int given) { unsigned short int result; asm { // better save the register state - just in case push eax ; push ebx ; push ecx; ; // start the thing - initialize variables mov ax, given ; load the number into ax [16 bits == 2 bytes] mov cx, 0 ; initially 0 mov bx, 0 ; same thing cont: add cx, 0x01 ; shr ax, 0x01 ; rotate left by X places rcl bx ; cmp cx, 0x10 ; reached end? je exits ; yes jmp cont ; no exits: mov result, bx ; save the result in variable // better restore the state pop ecx ; restore state pop ebx; pop eax; } return result; } void reverseAndDisplay(unsigned short numba) { bitset<16> output = numba; // for output cout << output << " <-- binary [" << output.to_ulong() << "]" << endl; // reverse output = rev_opt2(numba); cout << output << " <-- reversed [" << output.to_ulong() <<"]" << endl; return; } int main() { reverseAndDisplay(123); reverseAndDisplay(456); } kompilējas un izpildās šādi: g++ -Wall -m32 -fasm-blocks convert.cpp -o one.o && ./one.o 0000000001111011 <-- binary [123] 1101111000000000 <-- reversed [56832] 0000000111001000 <-- binary [456] 0001001110000000 <-- reversed [4992] visa algoritma būtība - 2 rindiņas, viss pārējais ir tikai boilerplate code. shr ax, 0x01 rcl bx Labots Aprīlis 27, 2016 - usver Link to comment Share on other sites More sharing options...
binary Aprīlis 27, 2016 Share Aprīlis 27, 2016 Es gan teiktu, ka visa algoritma būtība šajā gadījumā ir loops Link to comment Share on other sites More sharing options...
Recommended Posts
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 kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!