GUNIS95 Ierakstīts Novembris 7, 2014 Share Ierakstīts Novembris 7, 2014 Sveiki, Īsti nesaprotu kas ir jādara un kāds ir uzdevuma mērķis. Varbūt kāds varētu izskaidrot? Uzdevumu skatīt pielikumā. Link to comment Share on other sites More sharing options...
Borja Novembris 7, 2014 Share Novembris 7, 2014 Kas tad tur nav saprotams?Njem x veertiibas no -pi/2 liidz pi/2 ar soli pi/30un reekjina y veertiibas peec dotaas formulas.Un rekursija izmantojama tikai faktoriaala apreekjinaa. Citur nekur neredzu, ka rekursiju vareetu iedabuut. 1 Link to comment Share on other sites More sharing options...
GUNIS95 Novembris 7, 2014 Author Share Novembris 7, 2014 Esmu tik tālu ticis, bet vērtības nesakrīt. Kas nav pareizi? Program uzd; var X,A,S,Y: real; k:integer; begin x:= -pi/2; while x< pi/2 do begin S:=0.5-1*(x-(pi/4)); A:=-1*(x-(pi/4)); k:=2; while ABS(A)> 0.00001 do begin A:= -A*4*sqr(x-(pi/4))/((2*k-1)*(2*k-2));//Šeit tiek aprēķināts nākamais loceklis no iepriekšējā S:=S+A; k:=k+1 End; y:=cos(x); writeln(x:6:2,S:12,Y:12,k:6);//kāpēc izvadot uz ekrāna y nesakrīt ar S? x:=x+pi/30; end; end. Link to comment Share on other sites More sharing options...
Borja Novembris 7, 2014 Share Novembris 7, 2014 Kautkaads sviests tev tur ir. Kuraa vietaa notiek kaapinaashana? Kuraa vietaa tiek reekjinaats faktoriaals? Vispaar zini, kas faktoriaals taads ir? http://en.wikipedia.org/wiki/Factorial Varbuut saac ar to, ka uzraksti rekursiivu funkciju, kas tev faktoriaala veertiibu izreekjina? 1 Link to comment Share on other sites More sharing options...
MaurI Novembris 7, 2014 Share Novembris 7, 2014 (labots) Redz... varēji jau sākt ar to, kādā priekšmetā tas ir, iekš kā jākodē... Esi dzirdējis par funkciju izvirzīšanu rindā? Zini kā kalkulatorā rēķina kosinusa vērtību? No mat analīzes kosinusu var izvirzīt skaitļu rindā - bezgalīgā skaitļu rindā. Ja gribi izrēķināt kosinusa vērtību, tad tev jāizvēlas precizitāte, līdz kurai tu gribi rēķināt...respektīvi cik pirmos rindas locekļus paņemt. Saproti taču, ka tu nevarēsi bezgalīgu summu ar skaitliskām metodēm izrēķināt. Šeit tev ir jānofiksē n - teiksim tu paņemsi pirmos 10 rindas locekļus. Tas būs tavs tuvinājums-piedevām gana precīzs. Un tad respektīvi tev jāizprintē vienkārši 30 skaitļi uzdotajās robežās. Kur parādās rekursija? Nu vispār man nāk prātā LU BULS ar savām rekursīvajām funkcijām, bet laikam jau īsti nav. Ja nezini, tad tev jāizpīpē, kas ir rekursija. Ja ierakstīsi googlē "factorial using recurssion", tad arī sapratīsi kā to izdarīt, ja pašam nav izaicinājuma padomāt risinājumu, kurš ir triviāls. Karoč nomierinies - saliec visu pa plauktiņiem un būs ok. Labots Novembris 7, 2014 - MaurI Link to comment Share on other sites More sharing options...
GUNIS95 Novembris 8, 2014 Author Share Novembris 8, 2014 Zinu kā uzrakstīt faktoriāla funkciju. function faktorials(n:integer):longint; begin if n=1 then faktorials:=1 else faktorials:= n* faktorials(n-1); end; Link to comment Share on other sites More sharing options...
Леший Novembris 8, 2014 Share Novembris 8, 2014 (labots) while x< pi/2 do while x<= pi/2 do Un lūdzu uzraksti, kas tā par izglītības iestādi un kurš pasniedzējs. Iestādi vajag sadedzināt un pelnus izbert Baltijas jūrā, pirms tam vajag pārliecināties, ka pasniedzējs ir iestādes telpās. Jo vienkārši nedrikst mūsu laikos mācīt pascal, tas izkropļo jauniešu smadzenes. Labots Novembris 8, 2014 - Леший Link to comment Share on other sites More sharing options...
beryl Novembris 8, 2014 Share Novembris 8, 2014 Autors augustā postēja ka iestājies RTU. Link to comment Share on other sites More sharing options...
Леший Novembris 8, 2014 Share Novembris 8, 2014 Citur nekur neredzu, ka rekursiju vareetu iedabuut Ja imitēt reduce, tad var. Link to comment Share on other sites More sharing options...
GUNIS95 Novembris 8, 2014 Author Share Novembris 8, 2014 Nu tagad esmu uztaisījis šādi, bet atkal ir problēma. kad palaižu programmu parādās exit code 207: invalid floating point operation. Program aaa; uses crt; var X,A,S,Y: real; n:integer; function faktorials(k:integer):longint; begin if (k=1) or (k=0) then faktorials:=1 else faktorials:= k* faktorials(k-1); end; function Power(skaitlis:real; pakape:integer):real; begin Power:= Exp(pakape*Ln(skaitlis)); end; begin Clrscr; x:= -pi/2; while x<=pi/2 do begin A:=-1*(x-(pi/4)); S:=0.5+A; n:=1; y:=cos(x); S:=0.5; while Abs(A)>0.00001 do begin A:=power(-1,n)*power(4,n-1)*power(x-pi/4,2*n-1)/faktorials(2*n-1); S:=S+A; n:=n+1; End; writeln(x:6:2,S:24:6,Y:24:6,n:6); x:=x+pi/30; end; end. Link to comment Share on other sites More sharing options...
Inspektors Caps Novembris 8, 2014 Share Novembris 8, 2014 (labots) Un rekursija izmantojama tikai faktoriaala apreekjinaa. Citur nekur neredzu, ka rekursiju vareetu iedabuut. Jā, jā, un to, kas prasīts tēmas virsrakstā (un laikam uzdevumā) - rindas summu - jau nu nemaz "nevar" izvirzīt rekursīvi... Jo vienkārši nedrikst mūsu laikos mācīt pascal, tas izkropļo jauniešu smadzenes. Pascal nav ideāls, bet smadzenes pat tieši nostāda vietā, jo iemāca disciplīnu ar mainīgo definēšanu u.c. Smadzenes izkropļo visādi klojurēti pērļu javismi un citi murgi, arī C++, ja to pārāk frankenšteinizē. Labots Novembris 8, 2014 - Inspektors Caps 2 Link to comment Share on other sites More sharing options...
MarisO Novembris 8, 2014 Share Novembris 8, 2014 kāda problēma to uzrakstīt rekursīvi ? (defn cos-seq ([x] (cos-seq x 1 0)) ([x n prev] (let [sub (- x (/ Math/PI 4)) sign (if (even? n) 1 -1) t (if (< 1 n) (/ (* 4 prev sub sub) (* (+ n n -1) (+ n n -2))) sub)] (cons (* sign t) (lazy-seq (cos-seq x (inc n) t)))))) (defn cos [x] (reduce + (cons 0.5 (take 100 (cos-seq x))))) sandbox.cos> (cos (/ Math/PI -2)) -9.635267397164717E-16 sandbox.cos> (cos (/ Math/PI 2)) -5.3289895616575175E-18 sandbox.cos> (cos 0) 1.0000000000000002 Link to comment Share on other sites More sharing options...
beryl Novembris 8, 2014 Share Novembris 8, 2014 Kāda disciplīna atšķiras no mainīgo definēšanas sākumā? Atšķirība ka DD sludinājumos Pascal nefigurē. C++ un Java figurē. Link to comment Share on other sites More sharing options...
MarisO Novembris 8, 2014 Share Novembris 8, 2014 LOL tur sanāk tikai kautkas līdzīgs kosinusam Link to comment Share on other sites More sharing options...
Леший Novembris 8, 2014 Share Novembris 8, 2014 smadzenes pat tieši nostāda vietā Nē un nē. Pascal ir valoda, kas risinā problēmas absolūti nedabiskā veidā un box'o cilvēka domāšanu. Link to comment Share on other sites More sharing options...
MarisO Novembris 8, 2014 Share Novembris 8, 2014 Pascal ir ļoti primitīva valoda, kurā nav ļoti daudz konceptu un iespēju, kuras ir citur. To izmantot skolā ir pamatīga garīga atpalicība. Link to comment Share on other sites More sharing options...
Леший Novembris 8, 2014 Share Novembris 8, 2014 /offtop/ Eksperimenta pēc, varētu apmācīt kādu skolēnu/studentu grupu erlang, haskell vai lisp, nemācot paskalu/javu/c++. Diez, cik no viņiem iepatiktos programmēšana, cik labi tie tajā iebrauktu utt. 1 Link to comment Share on other sites More sharing options...
MarisO Novembris 8, 2014 Share Novembris 8, 2014 (labots) iekš Imperial College visi studenti sāk ar haskell. darba uzdevumā prasīts rēķināt cos() vai tā tiešām ir pareiza formula ? man cos sanāk tikai šādi (defn cos1 [x] (* 2 (reduce + (take 100 (cos-seq (/ x 2)))))) Labots Novembris 8, 2014 - MarisO Link to comment Share on other sites More sharing options...
GUNIS95 Novembris 9, 2014 Author Share Novembris 9, 2014 Ļoti atvainojos, pats esmu vainīgs. Mana funkcija ko jārēķina ir cos(x) kvadrātā nevis pirmajā pakāpē. Nepareizi norakstīju uzdevumu. Tagad mana programma iet. Un starp citu neesmu nesekmīgs programmēšanā un Pascal ir labs tieši priekš saprašanas. Citiem ir grūti iebraukt pat Pascalā, kur nu vēl jūsu minētājās programmēšanas valodās. Link to comment Share on other sites More sharing options...
japets Novembris 9, 2014 Share Novembris 9, 2014 Normālās darba intervijās prasa rakstīt uzdevumus paša izvēlētā valodā, kaut vai pseidokodā. Valodas "x" nīdēji bez objektīviem argumentiem var iet atpūsties un cerēt mani nesatikt kā intervētāju. Link to comment Share on other sites More sharing options...
GUNIS95 Novembris 9, 2014 Author Share Novembris 9, 2014 Pilnīgi piekrītu japet, galvenais ir izpildīt uzdevumu. Kā? Tas ir katra paša ziņā. Link to comment Share on other sites More sharing options...
Леший Novembris 9, 2014 Share Novembris 9, 2014 (labots) Normālās darba intervijās Izskaidro man sakaru valodas izvēlei darba intervijās ar to, ka LV pasniedzēji dēļ kaut kādām tradicijām izmanto vienu no sliktākām valodām pasaules vēsturē. Kaut pitons, JS vai pat Java būtu labākas alternatīvas beginners valodai. Labots Novembris 9, 2014 - Леший Link to comment Share on other sites More sharing options...
japets Novembris 9, 2014 Share Novembris 9, 2014 Ko nozīmē "sliktākā"? Kas tur ir slikts? Pitons, JS ar leaky abstraction ir nederīgas priekš iesācējiem. Pascal ir gana laba, lai *mācītos* algoritmus un programmēšanas pamatus Link to comment Share on other sites More sharing options...
daGrevis Novembris 9, 2014 Share Novembris 9, 2014 > Kaut pitons, JS vai pat Java būtu labākas alternatīvas beginners valodai. Tās būtu labākas tikai tāpēc, ka tās joprojām izmanto reālajā darbatirgū un, vienkārši, būtu noderīgākas. Un tikai tāpēc, jo savādāk šīs valodas tāpat ir no vienas grupas — imperatīvā programmēšana. No otras puses, Java sabojātu domāšanu daudz spēcīgāk nekā JavaScript, Python un Pascal kopā, cilvēks spētu par problēmu domāt tikai izmantojot OOP konceptus. Tāpēc Javai nevajadzētu būt kā pirmajai valodai ar kuru cilvēku iepazīstina ar programmēšanu. Būtu interesanti ja skolās, paralēli Pascal, tad C++ un Java, mācītu Scheme (Lisp) vai Haskell, tobiš, dekleratīvo programmēšanu. Link to comment Share on other sites More sharing options...
Inspektors Caps Novembris 9, 2014 Share Novembris 9, 2014 (labots) Kāda disciplīna atšķiras no mainīgo definēšanas sākumā? Tā mainīgo definēšana sākumā, pie tam atsevišķā speciālā vietā nav stulba mazsvarīga dīvainība, bet pareiza skaidra sakārtotība, īpaši mācību valodai. No tā cilvēks uzreiz dabū izprast kā darbojas programma/funkcija. To, ka vispirms tiek rezervēta vieta stekā un tad nāk pavisam cita daļa - izpildāmais kods. Tas uzreiz velk līdzi to, ka tiek izprasta steka būtība, pat, ja apmācāmais pats to vēl nenojauš un nezin kā to sauc. Tālāk pēc tam cilvēks apgūst dinamiskās atmiņas izmantošanu un tur Pascal labums ir tas, ka tā vispār nepinas kopā ar steka mainīgo definīcijām. Pilnīgais nodalījums veicina to, ka tiek izprasts, kas ir stack un kas heap atmiņa - kādas ir to atšķirības un pielietojumi. Savukārt, kad Pascal ir pietiekoši izprasts, tad pārslēgties uz C ir viens spļāviens, jo tās ir funkcionāli vienādas valodas. Un ar C jau var visu, kā arī ar to ir radītas lielākā daļa būtisko sistēmu. Kad ir izprasti pamati, tad tālāk problēmas nesagādā neviena valoda. Svarīgākais ir iemācīties programmēt ar izpratni, nevis apgūt līdz pēdējam smalkumam tieši Pascal sintaksi. Nē un nē. Pascal ir valoda, kas risinā problēmas absolūti nedabiskā veidā un box'o cilvēka domāšanu. Tieši Tavam teiktajam nē un nē. Kā augstāk aprakstīju, Pascal tieši lietas parāda tādas, kādas tās ir realitātē. Un Pascal neko nebox'o - to dara izglītības sistēma un cilvēki paši, apstājoties savā attīstībā. Pēc stack un heap izmantošanas apguves būtu jāiemācās programmēt objektorientēti un strukturēt kodu. Programmēt objektorientēti nenozīmē truli zināt C++, C# vai Java OOP konstrukcijas, bet gan mācēt programmēt objektorientēti jebkur un ar jebko, to skaitā Pascal, C un jebkurā asamblerī. Mācību iestādes veic tikai pirmo - parāda kā pamuļļāt kaut ko valodās, kurās ir specifiskas OOP konstrukcijas. Pilnībā OOP principus nevienam tur nemāca, un labu koda strukturēšanu vispār neviens pat nepiemin. Līdz ar ko parasti visi, kuri baigi plātās ar to, ka māk OOP, patiesībā ir puskoka lēcēji, kuri ir pilnībā box'oti "viss tikai objektos" domāšanā, un neko vairāk nespēj. Kā jau te minēja, piemēram Java ved tikai tajā virzienā. Tā nav attīstība, bet drausmīgi ierobežota kaste, no kuras pēc tam ir ĻOTI grūti izvilkt ārā! Python liels pluss ir formatējuma sasaiste ar funkcionalitāti. Formatējums kļūst obligāts, kas uzreiz iemāca disciplīnu, un reizē funkcionalitāte vienmēr ir korekti vizualizēta, kas palīdz precīzi izprast ko tieši tas kods vispār dara. JavaScript is classified as a prototype-based scripting language with dynamic typing and first-class functions. This mix of features makes it a multi-paradigm language, supporting object-oriented,[6] imperative, and functional[1][7] programming styles. Šis vispār ir tipiskā modernā murga piemērs. Labi, ka vēl ēst negatavo un māju netīra. Reāli neiemāca pilnīgi neko, kā vien haosu galvā. Nerunājot pat par to, ka tā praktiskais pielietojums ir tikai ļoti šaurā nišā - web pārlūkā, kur nav pieejamas lielākā daļa platformas iespēju un viss notiek vismaz desmitkārtīgi overbloated bremzētā (CPU) un uzpūstā (RAM) limitētā vidē. Tā ir vēl šaurāka domāšanas kaste par javizēto "speciālistu" kasti "viss tikai objektos". Un tad ir viena gandrīz visiem absolūti nepieciešama lieta, ko diemžēl nemāca vispār - multithreading. Ja programmētājs nevar nakts vidū paskaidrot kas ir thread, wait function, event, semaphore, mutex, critical section, volatile variable, atomic operation un deadlock, tad no labas un efektīvas programmēšanas viņš nesajēdz pilnīgi neko. Visi tie, kurus šeit daudzi laikam uzskata par "ar nebloķētu domāšanu", reāli ir vieni vienīgi truli "ciklā poll'otāji", kas ir bērnudārza līmenis. To pilnībā pierāda Arduino IDE popularitāte ar šo: setup(): a function run once at the start of a program that can initialize settings loop(): a function called repeatedly until the board powers off Internetā var redzēt kā visi "nebloķētās domāšanas speciālisti" raksta savas programmas ar šo pašos pamatos līko principu, jo patiesībā ir ļoti ierobežoti savā šaurajā domāšanas kastē. Un tieši tādēļ neviens no viņiem nejēdz radīt reālu production līmeņa programmatūru, kur būtu vairāk par dažām triviālām funkcijām, ko vienkārši truli ciklē uz riņķi. Labots Novembris 9, 2014 - Inspektors Caps Link to comment Share on other sites More sharing options...
Леший Novembris 9, 2014 Share Novembris 9, 2014 Pascal tieši lietas parāda tādas, kādas tās ir realitātē. Ok, prastākais jautājums: kā reālajā pasaulē izpaužās koncepts x := x + 1 ? Link to comment Share on other sites More sharing options...
Guest Novembris 9, 2014 Share Novembris 9, 2014 Ok, prastākais jautājums: kā reālajā pasaulē izpaužās koncepts x := x + 1 ? tieši tāpat kā: number += 1 Link to comment Share on other sites More sharing options...
Inspektors Caps Novembris 9, 2014 Share Novembris 9, 2014 (labots) @@Леший, ja uztraucies par ++ un -- operatoru neesamību, tad Pascal ir iebūvētas funkcijas Inc() un Dec(). Bet... Pēc skolas matemātikas izprast x=x+1 ir pat vieglāk par ++. Pārmācīties no viena uz otru, kad jau māki programmēt, ir pat mazāk par vienu spļāvienu. Mūsdienās kompilatori savu darbu dara tik labi, ka vari kaut visu mūžu rakstīt to saskaitīšanu un kompilators tāpat ieliks optimālāko CPU instrukciju, kas parasti būs palielināšana. Pat, ja izslēgsi optimizāciju vai ierakstīsi manuāli asamblerā un piespiedīsi kompilatoru likt saskaitīšanu, tad 99,9% programmatūras gadījumā tas nemainīs faktiski neko, jo performances atšķirība būs 0,0... %. Vai Tev tiešām liekas, ka viena skaitļu palielināšanas operatora nozīme ir vispār salīdzināma ar vispārējo programmas, funkciju un atmiņas pārvaldības darbības izpratnes nozīmi? Tad jau varēji piesieties vēl pie tā kā reālajā dzīvē izpaužas cikli - ar goto jeb procesora instrukcijās ar jump. Labots Novembris 9, 2014 - Inspektors Caps Link to comment Share on other sites More sharing options...
MarisO Novembris 9, 2014 Share Novembris 9, 2014 (labots) ja uztraucies par ++ un -- operatoru neesamību šeit laikam runa iet par to, ka matemātiski x nevar būt x+1. FP valodās (haskell, erlang un arī clojure) tas arī nav iespējams - mainīgajam nevar piešķirt citu vērtību. Manuprāt, tas ir labi un pareizi. No šāda viedokļa visas imperatīvās programmēšanas valodas ir draņķīgas un "kropļo domāšanu". programmēt objektorientēti jebkur un ar jebko, to skaitā Pascal, C un jebkurā asamblerī. Pascal taču neatbalsta OOP. Nav tur nekādas klases un objekti un polimorfisms un inheritance iespējams. Pascal tieši lietas parāda tādas, kādas tās ir realitātē. Manuprāt tikai assemblerī tā ir. Pascal lietotāji neko nezin par cpu reģistriem, steku , interrupts, system calls utml. Turklāt viņi parasti neizprot OOP un FP principus, jo paskālī nekā tāda nav. Pajautā paskālistam par polimorfismu vai higher order functions vai pattern matching vai list comprehension. Studentiem, kas mācās pascal nav nekāda nojausma, ka tādas lietas vispār pastāv. Piemērs, kā izglītības sistēma ražo maz-kvalificētus "speciālistus". Labots Novembris 9, 2014 - MarisO Link to comment Share on other sites More sharing options...
MarisO Novembris 9, 2014 Share Novembris 9, 2014 (labots) Scheme (Lisp) vai Haskell, tobiš, dekleratīvo programmēšanu manuprāt tās nav deklaratīvas. Prolog ir. Clojure ir LISP. Tur ir higher order funkcijas, bet nekas "deklaratīvs". PS es studēju LU, kad tur mācīja gandrīz tikai paskāli. Tas (pascal "studijas") bija pilnīgi bezjēdzīga nodarbe un waste of time. jārēķina ir cos(x) kvadrātā nevis pirmajā pakāpē. LOL man jau šķita, kas tas nav cos ! Labots Novembris 9, 2014 - MarisO Link to comment Share on other sites More sharing options...
Леший Novembris 9, 2014 Share Novembris 9, 2014 MarisO, gan haskell, gan lisp, gan erlang defaultā nav imperatīvas, visām defaultā nav state. Tātad ir deklaratīvas. Link to comment Share on other sites More sharing options...
MarisO Novembris 9, 2014 Share Novembris 9, 2014 (labots) patiesi, es biju domājis logic programming diemžēl nemāca vispār - multithreading To parasti māca kopā ar javu, vismaz pamata līmenī. Visi server-side java koderi raksta pavedienus katru dienu. Ja māca paskāli, tad gan nekā - jo tur jau nekādu pavedienu nav (vismaz DOSiskajā paskālī, ko lieto studenti). Bet iekš LU bija java (tikai maģistra kursā). Formatējums kļūst obligāts, kas uzreiz iemāca disciplīnu disciplīna ir arī nelietot mutable variables - vai lietot tikai tādu valodu (deklaratīvu LOL !!!), kur variables ir single assignment only un nekādi x=x+1 nav iespējami, turklāt tas ļauj efektīvi uzkodēt thread-safe kodu. (javā to dara, visur saliekot final , kas tomēr tāpat sūkā, jo daudzas klases ļauj modificēt to iekšējo stāvokli, piem, util.Date. Es reiz strādāju projektā, kur idioti bija uzrakstījuši mutable klasi Money, kurā bija "konstante" Money.ZERO. Vienu dienu kāds uz servera uzlika kodu, kas to ZERO maina uz kautko citu. LOL + tipisks paskālists nemaz nezin, kas ir immutable variables un nemaz nespētu uzrakstīt kodu deklaratīvā stilā. Topika autora kosinusa kods galīgi nav deklaratīvā stilā. (jo kodē paskālī nevis iekš clojure vai haskell). Ja kods nav deklaratīvā stilā rakstīts, tad tas tomēr nedaudz sūkā, pat ja ir pareizs. Tas , ka tur vajag definēt variables, neko daudz nenozīmē. Vairumā valodu tos vajag definēt (clojure - let blokā). Es domāju, ka "disciplīnu" un kodēšanu deklaratīvā stilā iemāca tikai tādas valodas, kur nav mutable variables. Formatējums un variabļu deklarācijas vieta ir secondary concern. Labots Novembris 10, 2014 - MarisO Link to comment Share on other sites More sharing options...
Inspektors Caps Novembris 10, 2014 Share Novembris 10, 2014 (labots) Es jau gaidīju, ka MarisO apstiprinās dzīvē visu manu teikto, bet viņš pat pārsniedza visas manas cerības. šeit laikam runa iet par to, ka matemātiski x nevar būt x+1. FP valodās (haskell, erlang un arī clojure) tas arī nav iespējams - mainīgajam nevar piešķirt citu vērtību. Manuprāt, tas ir labi un pareizi. Nē, runa bija par to, ka pieskaitīšana un palielināšana procesoram ir divas dažādas instrukcijas. Un nekas tur nav labi. Procesors un programmas to vien dara kā maina vienu un to pašu reģistru un RAM adrešu vērtības, un tieši to mums reālajā dzīvē arī vajag. Pascal taču neatbalsta OOP. Nav tur nekādas klases un objekti un polimorfisms un inheritance iespējams. Programmēt objektorientēti var jebkurā valodā, kas atbalsta pointerus. Tie pārējie lamuvārdi nav obligāti priekš OOP un visu var lieliski izdarīt bez tiem. (Starpcitu, ir arī Object Pascal, ko izmanto iekš Delphi, kas tagad kopā ar C++ Builder atkal atdzimst, bet ne par tiem šeit runa.) Te Tu ideāli pierādīji, ka Java koderi vispār nesajēdz kas īstenībā ir OOP un ir ĻOTI ierobežoti savā domāšanas kastē. Manuprāt tikai assemblerī tā ir. Pascal lietotāji neko nezin par cpu reģistriem, steku , interrupts, system calls utml. Turklāt viņi parasti neizprot OOP un FP principus, jo paskālī nekā tāda nav. Pascal ir viena līmeņa valoda ar C. Tās abas faktiski ir augsta līmeņa vienotas sintakses asambleri, jo visam, ko uzraksti, ir skaidri "redzams cauri" kā tas tiks nokompilēts. Un 99% sistēmas lietu no mazām mikrokontrolieru firmwarēm līdz lielu OS komponentēm un draiveriem tiek rakstītas C, kas bez interruptu, steka u.c. lietu saprašanas ir neiespējami. Ne visi šo valodu programmētāji zinās tehniskās lietas, toties Java programmētāji to nezinās gandrīz neviens vispār. Pajautā paskālistam par polimorfismu vai higher order functions vai pattern matching vai list comprehension. Studentiem, kas mācās pascal nav nekāda nojausma, ka tādas lietas vispār pastāv. Piemērs, kā izglītības sistēma ražo maz-kvalificētus "speciālistus". Neuztver personīgi, bet diemžēl Tu esi šīs sistēmas ražoto "speciālistu" piemērs. Daudz Tavu nosaukto lietu kā reizi ir tās, ko ir labi pamēģināt studijās, lai attīstītu domāšanu, bet tālākas praktiskas jēgas no tām gandrīz nav. Pie tam pilnīgi visus tos konceptus vai konkrētajā gadījumā nepieciešamās nianses var bez problēmām realizēt arī C, Pascal un citur. Funkcionālā programmēšana vispār neatbilst ne tam, kā strādā dators, ne tam, ko vajag operētājsistēmās, to aplikācijās, draiveros, iekārtu firmwarēs, informācijas sistēmās, web sistēmās un gandrīz visā, kas ir apkārt. Tā ir lieta priekš matemātiķiem-teorētiķiem, nevis programmatūras produktu radīšanai. Tev patīk risināt šos studentu mājasdarbus, jo pats vienkārši neesi vēlējies vai spējis tikt tālāk par šo līmeni. Labots Novembris 10, 2014 - Inspektors Caps Link to comment Share on other sites More sharing options...
MarisO Novembris 10, 2014 Share Novembris 10, 2014 (labots) Funkcionālā programmēšana .. ir lieta priekš matemātiķiem-teorētiķiem, nevis programmatūras produktu radīšanai. Tas ir ļoti nepamatots uzskats. Pasaulē (UK/US) ļoti bieži notiek dažādas FP konferences, kur piedalās software produktu radītāji, kas FP izmanto reālos projektos. FP ļauj kodu uzrakstīt kompaktāk un ātrāk, kas samazina izstrādes un uzturēšanas izmaksas. FP iespējas tiek implementētas mainstream valodās (Java 8 ir pievienotas funkcijas, closures / lambdas). FP valodas tiek lietotas in production dažādās iestādēs (no bankām līdz startupiem) un to popularitāte aug. Tev patīk risināt šos studentu mājasdarbus, jo pats vienkārši neesi vēlējies vai spējis tikt tālāk par šo līmeni. Es ļoti bieži clojure lietoju darbā. Kādreiz kodēju arī iekš scala. Deklaratīvais/FP stils ļauj uzlabot produktivitāti. lieta priekš matemātiķiem-teorētiķiem, nevis programmatūras produktu radīšanai. vai tu dzīvo kādā alā ? http://www.dailymail.co.uk server side ir 100% clojure https://smarkets.com - betting exchange ir 100% erlang http://top10.com/ 100% scala http://www.onthemarket.com/ tiek kodēts iekš clojure http://www.mastodonc.com/ clojure https://www.erlang-solutions.com/ http://www.cognitect.com/ https://typesafe.com/ www.betfair.com (scala dažos projektos - es tur kādreiz kodēju iekš scala) šo sarakstu var turpināt + iekš erlang ir tādi produkti kā Riak datubāze un RabbitMQ (kuru visi lieto) + microsoft pasaulē populārs ir F# Labots Novembris 10, 2014 - MarisO Link to comment Share on other sites More sharing options...
Ronalds Novembris 10, 2014 Share Novembris 10, 2014 Pascal taču neatbalsta OOP. Nav tur nekādas klases un objekti un polimorfisms un inheritance iespējams. Nu ko var murgot par lietām, par kurām nav sajēgas!... http://wiki.freepascal.org/Object_Oriented_Programming_with_Free_Pascal_and_Lazarus Link to comment Share on other sites More sharing options...
MarisO Novembris 10, 2014 Share Novembris 10, 2014 (labots) Studenti kodē DOSiskajā (Turbo) Pascal, kur nekādi objekti nav. Vismaz kādreiz (LU) tā bija. Tur neviens pat nepieminēja, ka kautkādi objekti/klases vispār pastāv. draiveriem tiek rakstītas C iekš C, nevis Pascal iekš linux kerneļa nekāds pascal laikam nebūs atrodams LOL Protams, ka zema līmeņa programmēšanai (draiveriem) ir izmantojams C/asm, nevis FP vai java vai pascal. Programmēt objektorientēti var jebkurā valodā, kas atbalsta pointerus. Jā, OOP var implementēt jebkurā valodā, kur ir pointeri vai funkcijas. Iekš LISP ir pat OOP bibliotēka šādam mērķim. Un iekš clojure ir elementāri uzprogrammēt polimorfismu/mantošanu (turklāt dažādos veidos). Saliec funkcijas iekš linkotiem mapiem un uzrakst metodes lookup f-ju. Piem. var dabūt multiple dispatch, kas nav javā. Bet tas nebūs idiomatic tās valodas pielietojums. + kompilatoru tad jau arī prasās mainīt, lai tam var iebarot klases. (Iekš LISP var izlīdzēties ar makrosiem). + un tipu sistēmu parasti arī, ja tur tādi ir. + un tad jau sanāk , ka ir izveidota cita valoda. C++ taču arī reiz kompilējās uz C. Tāpēc jau C nekļuva objekt-orientēts. Labots Novembris 10, 2014 - MarisO Link to comment Share on other sites More sharing options...
Ronalds Novembris 10, 2014 Share Novembris 10, 2014 Arī turbo paskālā ir objekti! http://en.wikipedia.org/wiki/Turbo_Pascal Tas ka par viņiem nerunā pasniedzēji, nenozīmē ka nav! Bet iesācējam sākt mācīties programmēšanu ar objektiem! Nu nu! Ja paskatāmies no vēsturiskā viedokļa, pirmajās programmēšanas valodās nevajadzēja definēt mainīgos un viņas izpildīja interpretatori. Tomēr pavisam drīz tika saprasts, ka kompilators ir krietni efektīvāks un mainīgos definēt vajag, kaut vai tāpēc, ka tad kompilators izķer pareizrakstības kļūdas mainīgo nosaukumos, nevis ievieš jaunus, kas ved pie grūti atrodamām loģiskām kļūdām. Bet nez kāpēc pēdējā laikā tiek spiests uz interpretējamām valodām (PHP, java) un nevajag definēt mainīgos. Link to comment Share on other sites More sharing options...
MarisO Novembris 10, 2014 Share Novembris 10, 2014 (labots) Jā, ir tiešām dīvaini, ka tos objektus neviens nelietoja un pat tika noklusēta to esamība. Varbūt viņi nevēlējās izskaidrot, kas ir OOP un pieturēties pie "standarta" Pascal / vecākas versijas. Javā vajag definēt mainīgos (un norādīt tipu, jo type inference tam nav). Ruby nevajag. Un Javā ir JIT, kas to kompilē darbības laikā. Ruby var šādi: class Item def initialize(item_name, quantity) @item_name = item_name @quantity = quantity end end Java to nevar. http://java.about.com/od/understandingdatatypes/a/declaringvars.htm Labots Novembris 10, 2014 - MarisO Link to comment Share on other sites More sharing options...
binary Novembris 10, 2014 Share Novembris 10, 2014 Eu, džeki, marš uz spamboxu! Cilvēks nācis ar konkrētu jautājumu, a jūs te izvēršat mūžīgos karus uz 40 postiem, it kā nebūtu nekā cita par ko parunāt. Nu ja nezināt atbildi, tad klusējiet, nevis spamojiet "par un ap". Lai gan varbūt vēl paspamojiet par intel vs amd, nvidia vs ati, pc vs mac? Tik pat labi varat teikt, ka ābece nekam neder, jo, redz, māca tikai burtus, bet neko neiemāca par komatu un punktu lietošanu. Figu - ābece ir pat ļoti laba! Iziet cauri ābecei - virzās uz nākamo līmeni. Tas pats programmēšanā - iziet cauri blokshēmām, virzās tālāk. Iziet cauri paskālim, virzās tālāk. Iziet cauri multithreadingam iekš ADA - jā, virzās tālāk, nevis apstājas. Bet nevienam, atkārtoju, *NEVIENAM* nav vērts mēģināt iestāstīt kaut ko par threadiem u.c. mēsliem, kamēr nav saprašanas par to, ka nevar saskaitīt integeru ar floatu, ko pēc tam jāpareizina ar stringu (oi, pag, varbūt var tomēr - izslavētais pitons to gandrīz vai prot!!1one). 3 Link to comment Share on other sites More sharing options...
MarisO Novembris 10, 2014 Share Novembris 10, 2014 ja nezināt atbildi, tad klusējiet te jau tika uzkodēts tas cos^2 , pat divās versijās. 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!