Popularnost gotovih dizajn rješenje (design patterns)

Učeći više o osnovnim principima programiranja primjećujem da je gotovo sav kod koji se može naći danas neka vrsta dizajn paterna (design pattern). Od mikro nivoa tj. malih aplikacija do frameworka, biblioteka, modula… Pa se čak i za koncept interneta može reći da je arhitektonski pattern. Koliki dio vašeg svakodnevnog programiranja čini primjena već napisanih rješenja (koje naravno treba prilagoditi) ? I uopšte, koliko programer treba da se oslanja na ovaj koncept u praksi ? Vidim da su najzastupljeniji u OO paradigmi, jer odatle i potiču. Ima li ih u drugim paradigmama - recimo postoje li C patterni ?

Izvrsno pitanje, mislim da na njega nećeš naći egzaktan odgovor.

Kao programer ne možeš pobjeći od toga da slične probleme rješavaš uvijek na sličan način sve dok ne saznaš da je taj način pogrešan. U tom smislu su patterni korisni, to su “male tajne velikih majstora kuhinje”. Kroz proučavanje patterna učiš trikove najboljih svjetskih programera, što ne znači da to i tebe čini dobrim programerom ali ti može pomoći da ne lutaš i ne griješiš previše. Druga stvar je da su neki patterni postali toliko popularni da je njihovo ime dio svakodnevne programerske terminologije npr. singleton ili factory.

A siguran sam da postoje i C patterni samo još niko nije napisao knjigu o njima :slight_smile: npr. volio bih čitati knjigu “design patterni u Linux kernelu”.

Mislim da je AOSA book vrlo blizu odgovoru na to pitanje. Adis je postavio temu nedavno al evo opet link: http://www.aosabook.org/en/index.html

Korisno ih je znati ali se ne treba previse uzbudjivati. :slight_smile: “Best practices” koje svako koristi postaju “average practices” :wink: tako i sa patternima.
Nema razloga da i u C-u ne mozes implementirati mnoge od patterna pogotovo ako se radi o arhitekturalnim patternima.
npr. teoretski ti bi u C-u mogao implementirati “front controller pattern” ako si dovoljno lud da pravis web aplikacije u C-u … :slight_smile:

Dovoljno lud? Ne treba bit lud uopste: http://hjemli.net/git/cgit/ :smiley:

treba biti dovoljno lud :slight_smile:
sto ne znaci da nema ludih ljudi :slight_smile:

Meni je kao neškolovanom programeru bilo jako zanimljivo otkriti šta sve spada u design pattern. Npr. interpreteri za skripne jezike su u suštini implementacija interpreter pattern-a - naravno malo kompleksnija.
E sad - učiš jezik, sintaksu, tipove podataka i lomiš se oko paradigmi ne znajući da imaš nešto “iznad glave” - nešto što određuje okvir u kojem pišeš program. Taj okvir sa dalje može smjestiti u širi kontekst i tako u nedogled. Živjela apstrakcija.