Jump to content

Patiesība vai Meli


RadiatorZ
 Share

Recommended Posts

Kā domājiet, šis citāts ir patiesība vai meli? vai varbūt daļēji paties? vai varbūt pilnīgas muļķibas.

 

Vislabākā valoda ar kuru sākt mācīties programmēt it Java , vai cita līdzīga. Īpaši kaitīgi ir sākt ar paskālu, jo tad topošais students noķer tā saucamo "Paskal sindromu" - peec kura ir ļoti grūti pārslēgties no strukturālās uz objekt orient programēšanu, grūtāk izprast objektus.

 

C++ manā skatījumā ir vē bīstamāks, ja students mācās pašmācības ceļā. JO šeit ir iespējams kodēt gan OOPiski , gan strukturāli un cilvēks pašam to neapzinoties sāk kodēt strukturāli, tanī pašā laikā iedomājoties ka kodē objektorientēti.

 

Ko es gribu pateikt. Tas ka no sākuma ir jāiemācās un jāizprot objektorientētas programmēšanas principi un idejas, tikai tad jāķeras pie kādas konkrētas valodas. Tāda pieeja ir daudz labāka un efektīvāka. Daudzas grāmatas sāk ar datu tipiem, mainīgajiem loopiem utt. manuprāt tas ir nepareizi.

 
Link to comment
Share on other sites

NormaalsCilveeks

tas viss ir [slēpts] jo jāsāk ar semantiku (sajēgu) - algoritmiem un blokshēmu pamatiem

un tad pie pilnīgas pakaļas būs kādu valodu (sintaksi) lietot kaut SDL kaut Qbasic

Link to comment
Share on other sites

Programmētājs

Paskals vai Beisiks ir vajadzīgs. Jo parasti tiem, kas apgūst programmēšanu nav pietiekams priekštats par programmēšanas iespējām. Tas ir kā valodu mācoties vispirms jāiemācās burti, tad vārdi un tikai kaut kad vēlāk pieturas zīmes.

Nav iespējams cilvēkam pateikt, ka vajag veidot jaunu objekta instanci, ja viņam nav nekāda priekštata par to kas tas ir. Ar definīciju nepietiek. Līdz tam ir loģiski jānonāk.

 

Tā kā es domāju, ka revolūcija programmēšanas mācīšanā nav nepieciešama, lai paliek kā ir :)

Link to comment
Share on other sites

Vispirms saprotam, kas ir mainīgais, kas ir funkcija, kas ir nosacījums un cikls.

Tad to visu var sakārtot pa objektiem.

 

Manas domas, tā pat, noprotu arī, kā iepriekšējo komentētāju - pilnīgs sviests tas citāts.

Link to comment
Share on other sites

piespļaušu, visam kas te teikts, klāt līdzību, ka sākt apgūt programmēšanu jau objektorientēti, ir tas pats kas mācīt bērnam lasīt izmantojot valodas gramatikas mācību grāmatu

Link to comment
Share on other sites

Šie izteikumi ir pilnīgi aplami. Un tiešām cilvēks kas viņu teicis ir teorētiķis - programmēt visticamākais pats nemāk...

(To teicis kāds skolotājs vai pasniedzējs. Bet pasakiet kurš normāls cilvēks par skolotāja algu ies beigt nervus klasē, ja viņš māk programmēt un ar šo darbu nopelnīt vismaz 2x vairāk....)

 

Īpaši kaitīgi ir sākt ar paskālu, jo tad topošais students noķer tā saucamo "Paskal sindromu" - peec kura ir ļoti grūti pārslēgties no strukturālās uz objekt orient programēšanu, grūtāk izprast objektus.

 

Kopš kura laika paskālā nav objektu??????

Piemēram delphi - paskāla bāzēta grafiska izstrādes vide - vieni objekti vien!

 

 

C++ manā skatījumā ir vēl bīstamāks, ja students mācās pašmācības ceļā. JO šeit ir iespējams kodēt gan OOPiski , gan strukturāli un cilvēks pašam to neapzinoties sāk kodēt strukturāli, tanī pašā laikā iedomājoties ka kodē objektorientēti.

 

Nu i pateica ... Ilgi bija jādomā... Bez tam objekta metodes jebkurā gadījumā strukturālas programmas.

 

Ko es gribu pateikt. Tas ka no sākuma ir jāiemācās un jāizprot objektorientētas programmēšanas principi un idejas, tikai tad jāķeras pie kādas konkrētas valodas. Tāda pieeja ir daudz labāka un efektīvāka. Daudzas grāmatas sāk ar datu tipiem, mainīgajiem loopiem utt. manuprāt tas ir nepareizi.

 

 

Kļūda - sākumā ir jāsaparot kas ir algoritms - darbību secība lai sasniegtu rezultātu (izrēkinātu kaut ko).

Tad jāsaprot kas ir mainīgais, IF operātors, cikls, utt - programmēšanas pamatelementi

 

Šīs ir programmēšanas pamatnostādnes bez kurām nevar programmēt. Ne objektorientēti, ne strukturāli! Tāpēc nevajag jaukt iesācējam galvu ar objektiem, mantošanām un citām grūti saprotamām lietām. Vajag sākt ar vienkāršu valodu, bez liekiem navarotiem, ieteicams teksta vidē kur ievades/izvades operācijas vieglāk programmējamas.

Link to comment
Share on other sites

Nu bet pastāstiet, cik labi programmētāji ir radušies savādāk, nekā sēžot caurām naktīm pie koda un izslimojot visas bērnu slimības - samežģītu kodu, pārspīlētu klašu lietošanu, un pieeju "visa-programma-vienā-blāķī", līdz pašam aizlec, kas ir labi,uzturami un kas slikti,ka pašam neērti skatīties un labot pēctam?

 

Ir jāpadara vispirms strukturālā, un tikai pēc tam OOP, lai rodas sajēga, kas ir kas. OOP ir tikai rīks, kur labu kodu var uztaisīt vēl labāk organizētu. Piemēram, Javā čata serveri uztaisīt, bez OOP ir daudz-daudz sarežģītāk, tātad cilvēks uz savas ādas izbaudīs, ka taisot visu procedurāli sanāk aplauzties un apmaldīties savā kodā.

Ir muļķīgi mēģināt lietot OOP, kamēr cilvēks tikai sper pirmos soļus un neprot organizēt savu kodu vai vispār izmanto galvenokārt pieeju "nokopējām kodu, mazliet palabojām, nodevām".

 

Java ir laba valoda, un to vajadzētu apgūt pēc C/C++ pamatiem, izmantojot augstskolu kursu uzdevumus, piemēram, "uztaisīt kalkulatoru".

 

Lielā problēma ir, ka cilvēki nemēģina iegūt sev praksi, bet jau atsperas uz lietām, kuras nav nekad pamēģinājuši. Tjipa - atnāk cilvēks uz galeriju, saka "krutas gleznas, pieņemiet mani darbā, es uzgleznošu tādas pašas - lai gan iepriekš tik akvareļus bērnudārzā esmu pamēģinājis". Un iedod viņam darbu, sēž tāds, eksperimentē uz kodu, kas citiem pēc tam jālasa. Taisa lietas, ko vajadzēja mājās eksperimentēt vispirms.

 

Ja programmētājs raksta samežģītu kodu darbā, tad tikai priekšnieka aizrādījums der - "klau, tava koda uzturēšanā aiziet vairāk laika, nekā uz citu kodu - nedari vairs tā, kā tu izdarīji tur-tur-unvēltur, taisi labāk vot-šitā". Jo slikts kods rodas tieši no redzesloka šauruma.

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

Kā saka Pēteris Kārkliņš atvainojos Krūmiņš savā blogā - http://www.catonmat.net/blog/about-this-blog/

...

So I have really good understanding of programming and have found two great approaches to software development. These approaches seem to be pretty well known and someone might say that they are wrong but I am going to show that they are not wrong and are efficient.

 

One of them I call “the hacker’s approach” which basically means you just create cool stuff quickly that works by using anything you have available. And if something doesn’t work you just get it working asap without getting into much details why it didn’t work. Might sound pretty lame but I am going to demonstrate in some of my posts that you can quickly create cool tools and software with little effort.

 

The other approach is what the title of this blog says “good coders code, great reuse“. This approach is similar to “the hacker’s approach” but it does not require that you create your software quickly and dirty. It just means you reuse existing libraries and spend little effort writing stuff that has already been written. Software reuse so to say. There are so many libraries and code available on sourceforge, code.google, freshmeat and many other sites that most of all the solutions to problems are there.

 

By using these two approaches I will create some great free software and will try to monetize it so I can make enough money for MIT :)

 

Es domāju, ka nav tādas universālās receptes. Attiecibā uz OOP - tā ir tikai viena no programmēšanas paradigmām, kura, protams, ka īstam programmētājam ir jāapgūst, taču tās apgūšana nekādā ziņā nav svarīgāka par citu paradigmu apgūšanu. Jā - ir iespējams programmēt neiepazīstoties ar visām paradigmām - tieši tāpat kā var naglot kopā parka soliņus neiemācoties visu par galdniecību (instrumentiem, materiāliem, metodēm). Jā - OOP apgūšana ir svarīga - taču vēl svarīgāka ir pašu "patternu" apgūšana un māka saredzēt šīs sakarības problēmu risināšanā ("Thinking in patterns" grāmatas). Piemēram, mikrokontrolieru programmēšana (kas starp citu ar Arduino utt kontrolieru iziešanu tautās kļūst aizvien svarīgāka aizvien plašākam ļaužu lokam) tehnisku ierobežojumu dēļ ir ekonomiski pamatoti efektīvāka nevis OOP paradigmā bet gan tieši procedurāli.

Labots - Aleksejs
Link to comment
Share on other sites

Es arī pievienojos tiem, kas uzskata, ka ar Pascal vajag sākt. Pirmkārt jau Pascal tika radīts tieši tāpēc, lai mācītu programmēt. Otrkārt, tieši tā - cilvēkam vispirms jāapgūst pamati; koda organizēšana ir nākamais solis. Un ir ļoti veselīgi jau pašā sākumā apgūt to, ka atmiņa nav "par brīvu" kā Javā, bet par to arī ir jādomā. Tāpat ar daudzām citām lietām.

 

Man šķiet, ka vissliktāk ir mēģināt sākt mācīties programmēt ar PHP. Šajā valodā pat pieredzējušiem programmētājiem ir grūti uzrakstīt elegantu kodu, kur nu vēl iesācējiem. Pie tam defaultās iespējas ļauj ļoti vienkārši uzrakstīt ļoti sarežģītas darbības, radot maldīgu iespaidu, ka šādas operācijas patiesībā ir ļoti vieglas un ātri izpildāmas. Rezultātā iegūstam spageti kodu, kurš uz jaunākā CPU velkas kā gliemezis. Un tam visam klāt vēl programmētājam ir viegli izveidot kaitīgus ieradumus.

 

C++ arī nevajadzētu būt pirmajai valodai, bet vairāk tāpēc, ka tā ir ellīgi sarežģīta. To ir grūti apzināties sākumā, kad saskare ar šo valodu ir bijusi minimāla. Es arī kādreiz domāju, ka protu programmēt C++. Tagad tā vairs nedomāju. Tur ir dafiga visādu knifu, speciālgadījumu, viltīgu konstrukciju, u.t.t. Apzināt šīs valodas iespējas vien nav viegli, un es vēl nespēju iztēloties, kādi ir principi, pēc kuriem vajadzētu vadīties, lai varētu uzrakstīt elegantu C++ kodu, nevis neveiklu spageti.

 

Tajā pašā laikā man jāatzīst, ka tad, kad ir jau mazliet programmēšanas pieredzes aiz jostas, es silti iesaku iemācīties C++. Pats to arī mēģināšu darīt, kad būs vairāk brīvā laika, un kompis salabots. Šī valoda saturēja daudzas savam laikam revolucionāras idejas, un tajā ir iespējams uzrakstīt ļoti labu un efektīvu kodu - ja māk. Kā sacīt saka - with great power comes great responsibility. C++ ir great power.

 

Java un .NET arī ir jaapgūst, bet jau vēlāk, kad programmēšana kā tāda ir saprotama. Šīs valodas jāapgūst tad, kad jaunas valodas apguve jau ir dažu nedēļu/mēnešu jautājums. Šīs ir valodas, kuras mūsdienās ir vispraktiskākās. Tās ir labs zelta vidusceļš starp efektīvu kodu, un viegli uzrakstāmu kodu. Bet, lai mācītu programmēt... nu, tās ir tādas, ne šis - ne tas šajā ziņā. Daudzas lietas (atmiņas pārvaldība, kolekcijas, primitīvie algoritmi) ir jau iekļauti defaultajās iespējās, kas nav īpaši jauki mācību nolūkiem. Tu arī ir daudz kur nogrieztas iespējas nomudīties un izdarīt aplamas lietas, kas arī mācību nolūkos reizēm ir lietderīgi. Tas viss ir labi, kad vajag ātri uzrakstīt strādājošu softu, kuru pēcāk viegli uzturēt, bet tas nav tik piemēroti mācīšanai.

Link to comment
Share on other sites

Par Pythonu neko daudz nezinu, bet pa ausu galam dzirdēts, ka tur tabulējumam ir nozīme. Tas, protams, ir bonuss. :)

Link to comment
Share on other sites

Par Pythonu neko daudz nezinu, bet pa ausu galam dzirdēts, ka tur tabulējumam ir nozīme. Tas, protams, ir bonuss. :)

Pitonā koda indentācija aizstāj klasiskos begin end un { }

resp tā vietā lai rakstīt

if(count > 5){ 
 std::cout << "WTF LOL " << endl;
}

Pitonā

if count > 5:
  print 5 

Atstarpēm jābūt vienāda lieluma (var izmantot tabus).

Link to comment
Share on other sites

Nu pag - tad nepieredzējušam koderim būtu jādod nepareiza valoda? :D

Pitons tika izvēlēts tādēl, ka tas atbilst:

Everything should be made as simple as possible, but no simpler

Pitonā ir svarīga glīta koda struktūra, kas ir ļoti labi tieši iesācējiem priekš mācīšanās.

 

Ok - tas jau ir offtopics. Par pašu pirmo jautājumu - visā visumā nepiekrītu, taču, protams šajos izteikumos ir arī ļoti daudz domu, kam piekrītu.

Link to comment
Share on other sites

Mr. Nejēga

Nūs, te jau aizgāja atkal, ka katrs maļ savu. Seit atkal ir tā pati instance, par ko jau tika minēts, kāpēc sākt ar Paskālu un tad tikai C++. No pašiem sākumiem, kad jaiemāca domāt pareizi, nav svarīgs galu gala, cik sarežģīta vai advanceta ir valoda, svarīgi ir, lai pamata lietas ar to būtu izdarāmas vienkāršā, saprotamā veidā [dļa asobo tupih]. Ja ar pitonu var uztaisīt smuku, ērtu Hello World programmu, un ir saprotams, ka IF palaiž to koda daļu pie tāda nosacījuma, un tas izpildīsies tad, ja ...., tad nav nekāda problēma. Neviens no iesācēja negaida, lai viņš pilnvērtīgi rakstītu pitonā/c++ā/perlā/paskālī kautvai. Pilnvērtīga rakstīšana ir kas tāds, uz ko tiecās, nevis ar ko sāk. Un valodai te ir ļoti maza nozīme, it īpaši jau sākumā. Tāpat kā sākumskolā nesāk Analītisko Geometriju vai lineāro algebru, bet vienkārši - matemātiku. un matemātiku principā var sākt mācīties ar visām grāmatām, kur ir "Ievads". Neviens neliek sīkajam šķirt uz beigu nodaļām.

Link to comment
Share on other sites

Kopš kura laika paskālā nav objektu??????

 

Tajā, ko māca skolā, nav. Strukturētā programmēšana, protams, ir vajadzīga, bet, kas es studēju LU, tad bakalaura programmā vispār nekā cita praktiski nebija. Turbo Pascal no rīta līdz vakaram.

Link to comment
Share on other sites

Nezinu, man liekas, ka nav jēgas mācīties valodu, kura nav pieprasīta.

Ieteiktu sākt ar C++ vai Javu. Jo ātrāk vai vēlāk pie šīm valodām vajadzēs tik un tā nonākt, tad kāpēc sākt ar kaut ko citu?

(C++ ļauj izveikt visādus "eleganuts vipendronus", bet bez tiem sākumā mierīgi var iztikt).

Ir tikai jāuzmanās, lai neuzrautos uz grāmatām, kas domātas cilvēkiem, kas jau māk programmēt tikai nezin attiecīgo valodu.

Vajag dabūt tādu grāmatu, kura labi izskaidro programmēšanas pamatus uz attiecīgās valodas bāzes.

Diemžēl man jau tiem laiki kad lasīju šādas grāmatiņas sen aiz muguras, tāpēc nevaru šobrīd neko konkrētu ieteikt.

Link to comment
Share on other sites

Tāpēc sākt ar kaut ko citu, ka ar citām lietām ir vieglāk mācīties. Jā, pēcāk visticamāk Tu izmantosi citu valodu. Bet, common - kad Tu māki programmēt, tad jaunas valodas apguve ir dažu nedēļu (augstākais mēneša) jautājums. Nafig sev čakarēt dzīvi pašā sākumā, ja pēc tam no tā tāpat nav labuma?

Link to comment
Share on other sites

RikO, mācīties programmēt un mācīties programmēšanas valodu ir divas ĻOTI dažādas lietas.

Pie kam otrā ir ārkārtīgi triviāla, ja zin' pirmo.

Link to comment
Share on other sites

RikO, mācīties programmēt un mācīties programmēšanas valodu ir divas ĻOTI dažādas lietas.

Pie kam otrā ir ārkārtīgi triviāla, ja zin' pirmo.

 

Es to ļoti labi saprotu. Tas arī bija tas, ko es gribēju teikt par tām grāmatām - vajag tādu, kas māca programmēt izmantojot Javuun nevis tādu, kas māca Javu. Bet neredzu kāpēc sākt vajadzētu ar paskālu un vai pitonu, lai vēlāk pārietu uz javu/C++.

Link to comment
Share on other sites

Nezinu, man liekas, ka nav jēgas mācīties valodu, kura nav pieprasīta.

 

Es tur saredzu citu problēmu - tikai vienas paradigmas izmantošana, OOP un funkcionālās pieejas atstājot tikai pašu studentu ziņā. Un ir redzēti gadījumi, kad cilvēki visu laiku pēc tam programmē strukturēti - piem. Javā uztaisa vienu gigantisku klasi, kur viss kods procedūru veidā sarakstīts. Un neizprot funkcionālo programmēšanu tai pašā javascriptā.

 

Iekš LU studenti kodē turbo paskālā līdz ģībst

Ir labi, ja tas neatstāj nekādas sekas.... bet varbūt visādi :|

Link to comment
Share on other sites

serioussam909

Pascal ir galīgi nekam nederīgs - nesaprotu tos kas tērē savu laiku veidojot tos Free Pascal un citus tooļus.

Sintakse tak tur ir garām ar visu to liekvārdību -

if blabla then
begin
end

if(blabla){}

vietā.

 

Tik kaitinoši bija kodēt delphi (skolā vajadzēja) pēc tam kad biju jau c# apguvis.

Link to comment
Share on other sites

@serioussam909, ja cilvēks nekad nav programmējis, tad "liekvārdība" viņam palīdz vieglāk saprast koda darbību. nu nav jēga cilvēkam likt saprast ko katrs no "{}()[]" simboliem nozīmē, ja viņam jau "i++;" izskatās pēc ķīniešu ābeces. bet iekš pascal uzreiz viss ir skadrs - ja ir "begin", značet sākās un pie "end" beidzās :)

vēl viens piemērs .. uzjautā kādam ne-programmētājam, kura rindiņa viņam šķiet saprotamāka:

a: "for(i=0; i<10; i++)"

b: "for i:=0 to 10 do"

:)

Link to comment
Share on other sites

serioussam909

ja cilvēks nekad nav programmējis, tad "liekvārdība" viņam palīdz vieglāk saprast koda darbību.

Kad es sāku programmēt C-stila sintakse man nesagādāja nekādas problēmas.

 

Bet laikam jau pascal ir tiem kas nav tik slinki kā es un netaisa šitādas funkcijas lai tikai nevajadzētu daudz rakstīt:

public static int getW()
   {
       return Engine.GraphicsDevice.Viewport.Width;
   }

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