Razvoj softvera: crno/bijeli svijet?

download Razvoj softvera: crno/bijeli svijet?

If you can't read please download the document

description

LinuxLab, Linux Konferencije Linux korisnika 2011, http://ieee.riteh.hr/node/38. Prezentacija br1: Razvoj softvera: crno/bijeli svijet? pokušaj kritičkog pogleda na razvoj softvera u svijetu i kod nas s praktičnim savjetima.. Primjer: popularnost programskih jezika

Transcript of Razvoj softvera: crno/bijeli svijet?

  • 1. Razvoj softvera Crno / bijeli svijet?

2.

  • Robert Lujo, Zagreb

3. Arhitekt poslovnih aplikacija 4. Voditelj softv.projekata 5. Softverski ininjer 6. 14 godina profesionalnog iskustva 7. OSS, python, django, C, C#, Java ... 8. @trebor74hr, linkedin,http://robert-lujo.com 9. O emu u priati?

  • uspjean razvoj softvera

10. problematika nije jednostavna, zahtijeva razliite vjetine i znanja, ininjerske i drutvene, puno je sudionika, puno razliitih sistema i tehnologija 11. ne postoji silver bullet koji bi tojednostavno i brzo rijeio 12. ininjer == dovitljivac 13. vrlo vrlo dinamino 14. Stalna na tom svijetu samo mijena jestPetar Preradovi 15. Razvoj softvera to je in

  • Agile development
  • Test systems

16. Continuous integration 17. Database evolutionary systems 18. Deploy frequently -> auto-deploy ... Static & Dynamic languages 19. (D)VCS, OOP, SQL dobro se dre 20. web, cloud, html5, jquery, json, RESTful, web api, distributed, SOA 21. mobile, mobile, mobile 22. to nam treba od alata

  • programski jezik

23. gotove biblioteke

  • vlastite

24. vanjske gotovi framework(i)

  • vlastiti

25. vanjski (polu) gotova rjeenja

  • vlastiti

26. vanjski

  • sustavza razvoj softvera
  • editor/IDE

27. (D)VCS 28. build system 29. testing system 30. CI/DB-evolut. system 31. deployment system 32. document system 33. issue tracker 34. A ostalo?

  • puno vanije:

35. Peter Norvig: [Programming] language choice is not as important as all the other choices: if you have the rightoverall architecture , theright teamof programmers, theright development processthat allows for rapid development withcontinuous improvement , then many languages will work for you; 36. ifyou dont have those things youre in troubleregardless of your language choice. 37. Alati

  • izbor alata je bitan

38. get the job done 39. izbor programskog jezika nije jedini izbor 40. tko kae da se rjeenje mora razviti u jednom programskom jeziku/tehnologiji (distrib. sustavi) 41. Standing on the shoulders of giants

  • suprotno od reinventing the wheel

42. sposobnostprepoznavanja boljeg od loijeg rjeenja 43. sposobnost razluivanja perspektivnog od odumirueg 44. Objektivnost

  • biti objektivan,bez predrasuda,holly wars

45. ne vezati se emocionalno uz tehniku i rjeenja 46. we just had a nice polite discussion about religion. *Then* we started on programming languages. The sparks flew."@voidspace 47. pitati i sluati druge, dozvoliti da vas uvjere 48. zdrava diskusija vodi optimalnom rjeenju 49. Strunost

  • ima nas boljih i manje boljih, no svi imamo priliku biti jo bolji

50. learn a new language every year 51. ali, paljivo odabirati/ulagati svoje vrijeme 52. pratiti i pokuati razumijeti dogaanja i trendove 53. dijeliti znanje 54. premda sve izgleda vrlo dinamino koncepti se rijetko mijenjaju

  • danas popularne paradigme su izmiljene 60tih i 70tih

55. Uinkovitost

  • opet get the job done

56. uiti kroz konkretno iskustvo - LOC ;)

  • it's not the (programming) languages that matter but what you do with them

razviti sustav ljudi i tehnike sposoban brzim prilagodbama na nove okolnosti jer

  • first design is allways wrong

automatizirati sve to se da automatizirati

  • wasting programmer time is the true inefficiency,not wast. machine time"

57. Drati svoj autoritet

  • prema klijentu i prema nadreenima

58. mi smo kao lijenici: oni opisuju simptome, a mi utvrujemo dijagnozu i propisujemo terapiju 59. Doktore, doktore imam zdravstvenih problema

  • znam to mi je

60. elio bi neku tabletu crvene boje 61. da me sve ne kota vie od 100 kn netko zna lijenika koji bi to tolerirao? 62. oni trebaju opisati to, a mi nudimo rjeenje i procijenjujemo trokove. A kako emo to napraviti? To je naa briga :) 63. stvari nikad nisu jednostavne kao to se ine; ovaj posao je vrlo zahtjevan i osjetljiv 64. Zabavljati se

  • imamo tu privilegiju :)

65. stvarati takvo okruenje, drutveno i tehniko 66. ekstremno? 67. if I stop having fun at my job, Its time to move on 68. praksa pokazuje da u naoj struci fun wins 69. Primjer Popularnost programskih jezika 70. Zavirimo u povijest-programski jezici

  • Linija birokratskih
    • Fortran 1955
  • 71. ALGOL 1958

72. COBOL 1959 73. BASIC 1964 74. C 1973 75. C++ 1980 76. ObjC 1983 77. Visual Basic 1991 78. Java 1993 79. C# 2001

    • Linija liberalnih
      • LISP 1958
    • 80. Smalltalk 1972
  • 81. Erlang 1986

82. Perl 1987 83. Haskell 1990 84. Python 1991 85. Ruby 1993 86. Lua 1993 87. Javascript 1995 88. PHP 1995 89. Groovy, Scala 2003 90. Clojure 2007 91. Go 2009 92. Zavirimo u povijest -paradigme

  • imperative
  • procedural(1955 Fortran, Algol, C, Basic)

93. object oriented (1972 Smalltalk, Java, C++, Python) declarative (1958 Lisp, SQL, XML, xHTML) 94. functional (1958 Lisp, Erlang, Haskell) 95. multiparadigm svi! 96. prethodno navedeno nije precizno! 97. to je popularno?

  • popularno == koristi se u velikoj mjeri

98. bolje se prije pitati,zatoje neto popularno? 99. zato jer donosinovac 100. community driven

  • brzo rjeava problem u traenom podruju (domena)

101. lako prilagodljivo na nove okolnosti 102. ini korisnika zadovoljnim (fun wins) -> uinkovitijim big company/ies driven

  • jer je velika tvrtka uloila velike novce i onda to gura, gura i gura

103. jer je jeftinije odravati sistem u postojeoj tehnologiji nego je prebaciti na novu (bolju) platform driven

  • primjer: java android, iOS ObjectiveC, Lua

104. to je onda popularno? izvor TIOBE indeks 105. Popularnost zadnjih 25 god. izvor TIOBE indeks 106. Statiki / dinamiki 107. LISP, hm?

  • 1958

108. prvi liberal 109. zamiljen kao koncept, a ne kao implementacija 110. oigledno dobar koncept :) 111. if-then-else, homoiconic, garbage collection, dynamic, interpreter, REPL, eval, lists, hashes, structures, lambda, closures, macros 112. nema dobru vibru - Lost In Stupid Parantheses :) 113. inspiracija za puno poznatije i novije: Smalltalk (prvi OOP->Lisp), Python, Ruby, Scala, Groovy, Clojure 114. Onda, koji je najbolji?

  • Svaki jezik/paradigma je nastala s razlogom
  • postojao je niz problema odreene vrste koju postojee tehnike nisu optimalno rjeavale izmislilo se bolje rjeenje

Primjer: Erlang 1986,danasdosta popularno za serverska rjeenja za asinkrone web zahtjeve (highly concurrent, websocket, comet) 115. postoji opravdan razlog za popularnost, za svakog od njih postoje podruja ( domain ) gdje su bolji od drugih

  • vano je znati koja su to podruja!

s druge strane ako jezik ve imam u prstima , za mene to je velika prednost 116. idealno : i da je pravi jezik za traeno podruje, i da ga imam u prstima 117. I na kraju ...

  • Stvari nisu crno/bijele! Pitanja?

118.

  • Hvala na strpljenju!
  • [email_address] @trebor74hr http://robert-lujo.com slijedi Python: na uzlazu ili silazu?