Onion Information
Paradigme programiranja u web aplikacijama: proceduralna, objektno orijentirana, funkcijska - GASERI
Paradigme programiranja u web aplikacijama: proceduralna, objektno orijentirana, funkcijska - doc. dr. sc. Vedran Miletić, vmiletic@inf.uniri.hr , vedran.miletic.net - Fakultet informatike i digitalnih tehnologija Sveučilišta u Rijeci, akad...
Onion Details
Page Clicks: 1
First Seen: 03/15/2024
Last Indexed: 10/25/2024
Onion Content
Preskoči na sadržaj Paradigme programiranja u web aplikacijama: proceduralna, objektno orijentirana, funkcijska doc. dr. sc. Vedran Miletić, vmiletic@inf.uniri.hr , vedran.miletic.net Fakultet informatike i digitalnih tehnologija Sveučilišta u Rijeci, akademska 2021./2022. godina Softverska kriza 1960-ih Prema Wikipediji : Projekti razvoja softvera koji su prelazili dana financijska sredstva za izradu Projekti razvoja softvera koji su prelazili dane vremenske okvire izrade Softver je bio vrlo neučinkovit Softver je bio loše kvalitete Softver često nije udovoljavao zahtjevima Projektima se nije moglo upravljati i bilo ih je teško održavati Softver nikada nije bio isporučen (engl. vaporware ; najpoznatiji primjer softvera pod tom etiketom je dugo vremena bila igra Duke Nukem Forever ) Rješenje softverske krize 1960-ih Razvijeno više metodologija razvoja softvera; najvažnije još aktualne su strukturirano programiranje i objektno orijentirano programiranje . Američki računalnih arhitekt i programski inženjer Fred Brooks objavljuje 1987. godine članak u časopisu IEEE Computer pod naslovom No Silver Bullet - Essence and Accident in Software Engineering u kojem piše: "there is no single development, in either technology or management technique, which by itself promises even one order of magnitude [tenfold] improvement within a decade in productivity, in reliability, in simplicity " "we cannot expect ever to see two-fold gains every two years [in software development , as there is in hardware development (Moore's law)]" Proceduralna paradigma (1/4) { "rm" : "http://example.group.miletic.net/nastava/RM/" , "pw" : "http://example.group.miletic.net/nastava/PW/" } Unknown key ' . $link_key . ' . \n' ; } Proceduralna paradigma (2/4) 🙋 Pitanje: Je li i ovo proceduralni kod? connect_errno ) { echo "Failed to connect to MySQL: " . $mysqli -> connect_error ; } $res = $mysqli -> query ( "SELECT given_name AS _name FROM profiles" ); $row = $res -> fetch_assoc (); echo $row [ '_name' ]; Proceduralna paradigma (3/4) 🙋 Pitanje: Je li i ovo proceduralni kod? connect_errno ) { echo "Failed to connect to MySQL: " . $mysqli -> connect_error ; } $res = $mysqli -> query ( "SELECT given_name AS _name FROM profiles" ); $row = $res -> fetch_assoc (); return $row [ '_name' ]; } Proceduralna paradigma (4/4) 🙋 Pitanje: Je li i ovo proceduralni kod? getAll (); foreach ( $profiles as $profile ) { echo $profile -> getName (); } Objektno orijentirana paradigma (1/2) from django.db import models from django.utils import timezone class Question ( models . Model ): question_text = models . CharField ( max_length = 200 ) pub_date = models . DateTimeField ( 'date published' ) def was_published_recently ( self ): return self . pub_date >= timezone . now () - datetime . timedelta ( days = 1 ) class Choice ( models . Model ): question = models . ForeignKey ( Question , on_delete = models . CASCADE ) choice_text = models . CharField ( max_length = 200 ) votes = models . IntegerField ( default = 0 ) q = Question ( question_text = "What's new?" , pub_date = timezone . now ()) q . save () q . choice_set . create ( choice_text = 'Not much' , votes = 0 ) q . choice_set . create ( choice_text = 'The sky' , votes = 0 ) Objektno orijentirana paradigma (2/2) def Student { call_endpoint ( `api/getfollowersbyid/ ${ result . userID } ` , result => { call_endpoint ( 'api/someothercall/' + result . followers , result => { // ... }); Suvremeni JavaScript ovo izbjegava korištenjem async i await , za one koji žele znati više: Escape from Callback Hell (Incognito, 1st November 2020) Funkcijska paradigma (3/4) Prema Wikipediji : deklarativna paradigma temeljena na korištenju funkcija i kompozicija funkcija funkcije se mogu dodjeljivati kao vrijednost, prosljeđivati kao argumenti drugih funkcija i vratiti kao rezultat izvođenja drugih funkcija čisto funkcijsko programiranje : funkcija vraća uvijek isti rezultat za iste ulazne parametre, što olakšava testiranje i otklanjanje grešaka Funkcijska paradigma (4/4) (...) many functional languages are seeing use today in industry and education, including Common Lisp, Scheme, Clojure, Wolfram Language, Racket, Erlang, Elixir , OCaml, Haskell, and F#. Functional programming is also key to some languages that have found success in specific domains, like JavaScript in the Web , R in statistics, (...) In addition, many other programming languages support programming in a functional style or have implemented features from functional programming, such as C++11 , Kotlin, Perl, PHP , Python , Go, Rust, Raku, Scala, and Java (...) Primjeri korištenja funkcijskih jezika na webu: Phoenix Framework za Elixir ima 17k+ GitHub zvjezdica ( za usporedbu ) Hacker News ( izvorni kod napisan u jeziku Arc ) ima 10M+ pogleda mjesečno Author: Vedran Miletić