Madalas itanong ng mga may balak matuto ng programming kung ano ang kailangan nila para maging handa sila sa gagawin nila. Sa totoo lang, maraming magagandang sagot sa tanong na iyan:

Kailangan mayroon kang ‘passion for learning’.

Kailangan hindi ka natatakot magtanong o humingi ng tulong sa mas may nakakaalam.

Kailangan sanayin mo ang iyong ‘analytical skills’.

Para sa akin, mayroong isang magandang sagot na hindi ko gaanong naririnig kahit sa mga bihasa sa programming:

Kailangan matuto kang pumansin at makaalala ng mga pattern at idiom.

Kapag tinuturo ang programming sa mga baguhan, kadalasan ito ang paraan na ginagamit ng mga guro:

  1. Ituro kung paano gawin isang bagay
  2. Magbigay ng problema na kayang malutas gamit yung itinuro sa (1).

Ang problema dito ay tinatrato ng guro na pareho ang Math (kung saan nararapat ang paraang ito) at programming. Hindi sapat ang malaman kung ano ang mga bahagi ng mga program — kailangan mo ring malaman kung anu-ano ang mga posibilidad kung paano mo ibubuo ang mga program gamit ang mga natutunan mong bahagi ng program.

At ang mga kumbinasyon na iyon ay matatawag nating “pattern“.

Kunwari tuturuan mo ng iteration ang isang estudyante. Siyempre ibibigay mo sa kanyang pang-practice ay tung paggawa ng tatsulok na asterisk gaya nito:

*
**
***

Magtapatan tayo: sino sa inyo talagang nakakuha kung paano gawin ito ng walang tulong?

Mukhang simple siya — kasi simple nga siya basta alam mo yung pattern kung saan pwede mong gamitin yung counter sa nested loop:

for i <- 1 to 3:
    for j <- 1 to i:
        print "*"
    print "\n"

Dito natin makikita na hindi nga sapat ang pag-turo ng "basic concepts" lang sa programming. Kung tutuusin parang dinadaya nating mga guro ang mga estudyante pag hindi natin pinapakita at pinapaliwanag itong mga pattern na ito bago natin binibigay yung mga ganitong klaseng exercises o tests.

At sino naman yung mga nakakakuha ng tamang sagot?
Tama, yung mga may karanasan na sa programming i.e. yung mga estudyante na may kaalaman na tungkol sa mga pattern na ito.

Magbigay pa tayo ng isang halimbawa. Paano mo isusulat itong expression na ito?

kung ang pangalan niya ay Juan o Maria, gawin mo...

Pag tinuro mo lang ang konsepto ng boolean logic operators, malamang ang gagawin ng estudyante mo ay:

if name == Juan or Maria ...

Pero itanong mo sa kahit na sinong marunong mag-program, ang tamang code diyan ay:

if name == Juan or name == Maria ...

Isa nanamang pattern.

--

Kaugnay sa pattern ang mga idiom; pwede nating ituring na pattern lahat ng idiom.

Ang mga idiom ay mga pattern na madalas mong makita sa mga program na hindi ganoon ka-obvious para sa mga baguhan. Yung name == Juan or name == Maria natin sa taas ay isang halibawa ng idiom.

Kung tutuusin, pwede nating tawagin na idiom ang "=" operator sa mga programming language na gumagamit nito bilang assignment operator.

a = 100
b = 2
a = b

Para sa mga taong walang alam sa programming, walang saysay ang tatlong linyang iyan. Tinuro sa atin sa algebra na hindi pwede ang ganyan.

Subalit para sa mga developer, dahil iba ang ibig sabihin ng "=" sa ilang programming language, mayroon itong saysay at mayroon itong ginagawa.

Baka isipin ninyo "ang hina naman ng baguhan kung nalalabuan siya sa 'idiom' na iyan". Pero sige nga, subukan ninyo ngang intindihin itong Haskell code na ito:

a = do x <- [3..4]
       [1..2]
       return (x, 42)

Kung hindi kayo pamilyar sa Haskell, tiyak na malilito kayo sa ginagawa ng code na ito. Mukhang dapat madaling maintindihan yung do-notation o kahit man lang yung return, pero pag pinag-aralan ninyo kung ano ang ibig sabhihin ng mga idiom na yan, magugulat na lang kayo na malayo sila sa inaasahan ninyo.

Sa example na ito rin makikita na minsan binibigyan tayo programming languages ng mga paraan para isulat ang mga idiom. Halimbawa:

count++;  /* increment by 1 in C-based languages */
if 10 < x < 100:  # one way to range check in Python 

--

Hindi lang sa programming language nakikita at nagagamit ang mga pattern at idiom. Sa lahat ng level ng software development, mayroong mga patterns na sinusundan para mapadali ang

Halimbawa sa game development, lahat ng computer games gumagamit ng game loop:

while( user doesn't exit )
  check for user input
  run AI
  move enemies
  resolve collisions
  draw graphics
  play sounds
end while

Iba pang halimbawa ng patterns ay ang Model 2 at MVC ng web development, at Design Patterns ng Object Oriented Programming.

Sa madaling salita, mas mahalaga ang pag-aaral wastong paggamit ng patterns at idioms ng mga languages at platforms kaysa pag-aaral ng languages mismo.

Tagged with →  
Share →

Leave a Reply

Google+