» »

Applov nov programski jezik Swift

Applov nov programski jezik Swift

Slo-Tech - Apple je na dogodku WWDC presenetil vse prisotne in razkril nov programski jezik z imenom Swift, ki so ga v veliki tajnosti pripravljali zadnja štiri leta. Swift želi nadomestiti Objective-C in Python, od katerih je Applovih besedah precej hitrejši, in postati prva izbira pri programiranju aplikacij za OS X in iOS.

Sintaksa in logika jezika, ki se ju lahko naučite v priročniku, ki ga je Apple že postavil na iTunes, sta precej podobni Objective-C. Sprememb je le toliko, da bi programiranje potekalo hitreje in predvsem z manj napakami, ki jih lahko v Objective-C hitro zagrešimo. Poleg glavnih inspiracij so pri razvijanju Swifta črpali tudi iz Rusta, Haskella, Rubyja, C# in CLU. Za primerjavo: klon Flappy Bird je mogoče sprogramirati v enem delovniku.

Zanimivo je, da je Apple uspel jezik razviti v strogi tajnosti, kar je izjemno težko. Projekt je trajal vsega štiri leta, in sicer se je začel julija 2010 kot samostojni projekt zgolj nekaj posameznikov. Dodatni inženirji so se mu pridružili leta 2011, glavni projekt ekipe Apple Developer Tools pa je postal šele julija lani. In do danes je zrasel v samostojni delujoči jezik. Apple pravi, da je izjemno hiter, saj naj bi kompleksno sortiranje izvedel skoraj štirikrat, šifriranje RC4 pa kar 220-krat hitreje kot Python.

V zadnjem času je bilo razvitih cel kup novih jezikov, ki pa nekako niso zmogli premagati starih dinozavrov. Swift ima precejšnje možnosti, da mu to uspe, saj za njim stoji Apple. In vsakdo, ki je kdajkoli programiral mobilne aplikacije, ve, da ne sme izpustiti platforme iOS, kjer je treba delati, kot zapoveduje Apple. Strah je sicer odveč, saj bo še vedno paralelno podprt Objective-C, tako da ne bo treba na vrat na nos skočiti v nov jezik. Vseeno pa bo prehod z Objective-C dober, saj ga je že pošteno načel čas, ugotavljajo na ArsTehnici.

72 komentarjev

«
1
2

Marat ::

V zadnjem času je bilo razvitih cel kup novih jezikov, ki pa nekako niso zmogli premagati starih dinozavrov. Swift ima precejšnje možnosti, da mu to uspe, saj za njim stoji Apple.


Swift je resda korak v pravo smer (napram objective-c), vendar malo dvomim da bo zaživel tudi zunaj applovega okolja, na drugih platformah. Apple je pač naredil svojo kopijo pythona :)

David Karlas ::

Stvar nima Exception-ov? Ni try,catch,final...
Nima modifierjev public,private,protected,internal, ampak ima le exported(public) in vse ostalo je free for all znotraj projekta(vse je internal)
Aja kr se hitrosti tiče... http://www.splasmata.com/?p=2798
nima nč za concurrency... lock? synchronized? async/await?
Se bo treba bolj potrudt in Andersa ukrast ;)

Za enkrat bomo kr pri C# ostali...

arjan_t ::

zakaj tocno rabis expectione? vse kar dobis so problemi

zigomir ::

@David Krlas A za iOS/OSX development bos tut ostal na C#? :)

Zgodovina sprememb…

  • spremenil: zigomir ()

arjan_t ::

zigomir je izjavil:

@David Krlas A za iOS/OSX development bos tut ostal na C#? :)


obstaja npr. xamarin

smash ::

arjan_t je izjavil:

zakaj tocno rabis expectione? vse kar dobis so problemi


ti se hecaš ane

avister ::

smash je izjavil:

arjan_t je izjavil:

zakaj tocno rabis expectione? vse kar dobis so problemi


ti se hecaš ane


V objective-c načeloma ne uporabljamo "try-catch-except" - razlogi so različni in jih lahko poiščeš na spletu.

https://developer.apple.com/library/mac...

Je pa seveda to osebne preference, nekateri raje vidijo, če program poskrbi za napake med izvajanjem, nekateri pa pač za to poskrbijo med programiranjem.

David Karlas ::

@zigomir pa Android tudi ;)
Sej se da tudi brez try catch finnaly vse naredit samo kolk bo potem lepa koda(kvalitetna...)?

@avister
ObjC pa nebomo jemali kot zgled ane? Sej se ga še Apple hoče rešit, če je šel delat nov jezik...

arjan_t ::

David Karlas je izjavil:


ObjC pa nebomo jemali kot zgled ane? Sej se ga še Apple hoče rešit, če je šel delat nov jezik...


rust, go? oba brez exceptionov (razen fail!/panic)

pac1 ::

David Karlas je izjavil:

@zigomir pa Android tudi ;)
Sej se da tudi brez try catch finnaly vse naredit samo kolk bo potem lepa koda(kvalitetna...)?


Ker končnega uporabnika predvsem zanimao kako lepa (kvalitetna) je koda...

Seveda se da naredit brez try catcha samo kaj ko ti nihče (tudi uporabnik) več ne zna povedat zakaj je zadeva crknila. "Jaz sem strokovnjak in ne delam napak... vse exceptione sem odpravil že med samim programiranjem. Jaz sem strokovnjak.. vem kaj delam... I am the mighty HULK" Looool self confidence.

arjan_t ::

David Karlas je izjavil:


Sej se da tudi brez try catch finnaly vse naredit samo kolk bo potem lepa koda(kvalitetna...)?


ti dejansko verjames da je try/catch edini nacin za error handling?

David Karlas ::

@pac1 Kvaliteta kode = kvaliteta programa = happy user
@arjan_t Verjamem, da je najbolj udoben način za programirat ne pa edini...

smash ::

ja kako pa ujet napake, o katerih se ti sanja ne, da obstajajo?

avister ::

David Karlas je izjavil:

@zigomir pa Android tudi ;)
Sej se da tudi brez try catch finnaly vse naredit samo kolk bo potem lepa koda(kvalitetna...)?

@avister
ObjC pa nebomo jemali kot zgled ane? Sej se ga še Apple hoče rešit, če je šel delat nov jezik...


Vsakemu svoje.

Da smo vsaj malo on-topic. Namestil sem si to čudo in se trenutno samo čudim :)

Zgodovina sprememb…

  • spremenil: avister ()

avister ::

smash je izjavil:

ja kako pa ujet napake, o katerih se ti sanja ne, da obstajajo?


Če govorim za iOS, potem napaka, ki si jo spregledal in ne veš da obstaja, zapre aplikacijo.

To je sicer bolj filozofsko; kako pa obravnavat napako za katero ne veš, da obstaja?

Seveda ... pohendlaš A, B, C in nazadnje vse ostalo. No to me zanima. Kaj narediti z ostankom?

Spura ::

 220-krat hitreje kot Python
To je pa res vesoljni dosezek. :));((

telen ::

Sej to dajo vedno take primerjave da je n-krat hitrejši, v realnosti pa obstaja podobno hitra stvar.

vostok_1 ::

Meni ni nikoli blo jasno zakaj morajo biti programski jeziki v splošnem tako zaguljeni.

Invictus ::

vostok_1 je izjavil:

Meni ni nikoli blo jasno zakaj morajo biti programski jeziki v splošnem tako zaguljeni.

Zato ker se ti najbrž ne sanja preveč o stvareh ki se dogajajo spodaj, pod površjem ...

Če bi kdaj programiral v asemblerju ali celo mikro kodo za CPU, bi videl da je večina stvari povsem logično zastavljena.

In ker vsak razvijalec vleče zadevo s sabo od pamtiveka ...
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

pegasus ::

Še en applov zajeb ... tako kot so zajebali, ko so splavili iphone, oblikovno optimiziran za skladiščenje, namesto nekaj, kar bi ergonomično sedlo v roko, kot npr. banana. Tokrat bi lahko sestavili jezik, ki bi onemogočal unsecure programiranje, a jih to očitno sploh ne zanima. Z vplivom, ki ga imajo na svet, bi lahko storili nekaj dobrega. Ampak ne. Prav, pa ne. In NSA veselo dalje opravlja svoj posel.

dope1337 ::

Invictus je izjavil:

vostok_1 je izjavil:

Meni ni nikoli blo jasno zakaj morajo biti programski jeziki v splošnem tako zaguljeni.

... Če bi kdaj programiral v asemblerju ali celo mikro kodo za CPU, bi videl da je večina stvari povsem logično zastavljena. ...


Podpišem

Šele tam ugotoviš, da sta si "zaguljenosti" in optimizacija obratno sorazmerni.
"Everybody is a genius. But if you judge a fish by its ability to climb a tree
it will live its whole life believing that it is stupid."
-Albert Einstein

smash ::

pegasus je izjavil:

Še en applov zajeb ... tako kot so zajebali, ko so splavili iphone, oblikovno optimiziran za skladiščenje, namesto nekaj, kar bi ergonomično sedlo v roko, kot npr. banana. Tokrat bi lahko sestavili jezik, ki bi onemogočal unsecure programiranje, a jih to očitno sploh ne zanima. Z vplivom, ki ga imajo na svet, bi lahko storili nekaj dobrega. Ampak ne. Prav, pa ne. In NSA veselo dalje opravlja svoj posel.


ne vem no, ampak če vidiš priložnost v bananah, se jih loti, te podpiram, verjetno še kdo

zee ::

tako kot so zajebali, ko so splavili iphone, oblikovno optimiziran za skladiščenje


Applova gora denarja iz prodaje iNaprav pravi, da se motis. Ce bi bil oblikovno res tak fail, potem ga ne bi oponasali domala vsi ostali.
zee
Linux: Be Root, Windows: Re Boot
Giant Amazon and Google Compute Cloud in the Sky.

sensei ::

S tem da ergonomsko oblikovani telefoni (nokiina bananca) so že bili na trgu in prav vsi vemo kako se je zadeva končala. Ampak nima veze, pegasus ve, da je epl to naredu zato da lažje skladiščijo. Jebe se eplu za ns, važn da majo skladišča porihtana zdj k je Cook šefe.

kotnikd3 ::

pegasus je izjavil:

Tokrat bi lahko sestavili jezik, ki bi onemogočal unsecure programiranje, a jih to očitno sploh ne zanima.

unsecure programiranje? lahko kaj več poveš o tem, kaj to je?

pegasus ::

95% C programerjev, recimo ;)

Furbo ::

pegasus je izjavil:

Še en applov zajeb ... tako kot so zajebali, ko so splavili iphone, oblikovno optimiziran za skladiščenje, namesto nekaj, kar bi ergonomično sedlo v roko, kot npr. banana. Tokrat bi lahko sestavili jezik, ki bi onemogočal unsecure programiranje, a jih to očitno sploh ne zanima. Z vplivom, ki ga imajo na svet, bi lahko storili nekaj dobrega. Ampak ne. Prav, pa ne. In NSA veselo dalje opravlja svoj posel.


Ja, sploh ker so iPhonov polna skladišča, ker jih nihče noče. Razen vseh.

To da so približali pametne telefone ljudskim množicam in jih končno naredili uporabne verjetno ni nič dobrega.

NSA bo svoj posel opravljala itak še naprej, pa čeprav morajo sami izdelovati teroriste, da jih potem ganjajo.
i5-13600K, Noctua NH-D15, STRIX Z790-F, 32GB DDR5, 2TB Samsung 990PRO,
Toughpower GF3 1000W, RTX3070, ALIENWARE AW3423DWF, Dell S2722QC

pegasus ::

To samo potrjuje (celo dvakrat), da so ljudske množice pač glupe. In kar me najbolj jezi, jaz moram zaradi tega trpeti. Hura za demokracijo.

Anyway, nekdo je zgoraj rekel, da bo ostal na C#. Na žalost se moram strinjati.

Andre ::

Objective C je res se najmanjsi problem razvijanja za iOS. Ze res da ima strmo krivuljo ucenja, je pa kar nekaj principov zanimivih.
Naj se raje posvetijo layotingu, podpori vecjim zaslonom k so na vidiku....

roli ::

Objective C je bil nočna mora za učenje ampak, ko se ga enkrat navadiš ti pa postane blazno všeč. In kakor sem gledal tole čarovnijo od Swifta mi ni ravno všeč. Objective C izgleda kot nekaj kar ima smisel. Tole ga nima.

Kar bi moral Apple precej bolj porihtati je prokleti auto-layout sistem, ki je v trenutnih verzijah prav grozljiv za uporabo. Ko pol dneva študiraš kako nek frame premakniti za par pikslov v eno smer z auto-layoutom in hkrati veš, da bi lahko ročno stvar naredil v treh vrsticah kode ti nekako vzbudi sovražni duh.

Mislim, da so šli v nov programski jezik samo zato, da lahko k sebi privabijo vse, ki so se učili na Pythonu in podobnih in jih je Cja strah.
http://www.r00li.com

Zgodovina sprememb…

  • spremenil: roli ()

black ice ::

roli je izjavil:


Mislim, da so šli v nov programski jezik samo zato, da lahko k sebi privabijo vse, ki so se učili na Pythonu in podobnih in jih je Cja strah.

Kar je v bistvu žalostno.

Kocka ::

avister je izjavil:

Namestil sem si to čudo in se trenutno samo čudim :)

V kakšnem smislu? V pozitivnem / negativnem?

Meni je kar všeč, ker je manj "navlake", ni headerjev ipd. Samo prehod na nov jezik - če sta v istem projektu oba jezika - zna biti malo tečno.

vostok_1 ::

Invictus je izjavil:

vostok_1 je izjavil:

Meni ni nikoli blo jasno zakaj morajo biti programski jeziki v splošnem tako zaguljeni.

Zato ker se ti najbrž ne sanja preveč o stvareh ki se dogajajo spodaj, pod površjem ...

Če bi kdaj programiral v asemblerju ali celo mikro kodo za CPU, bi videl da je večina stvari povsem logično zastavljena.

In ker vsak razvijalec vleče zadevo s sabo od pamtiveka ...


Šure, ko gre za zahtevnejše zadeve je fanj imeti na razpolago vso moč. Ampak za običajnega programerja ali splošno programersko izobraženost je večina jezikov plain old silly.

kotnikd3 ::

pegasus je izjavil:

95% C programerjev, recimo ;)

Torej če te prav razumem, ti bi odstranil vse exceptione, try - catch zanke oz. kar vse nižje-nivojske jezike, pri katerih obstaja večja možnost napake kot pri HTML-ju ?
Če sploh veš o čem govorim, argumentiraj, drugače pa ne bluzi ...

next_byte ::

različni jeziki za različne stvari :)

MrStein ::

David Karlas je izjavil:


Aja kr se hitrosti tiče... http://www.splasmata.com/?p=2798

Ti testi ne zaslužijo niti naziva "sintetični".
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

MrStein ::

220-krat hitreje kot Python.

Preveden program proti interpretiranemu? :)
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

66speeder66 ::

Koliko je pa kompatibilen s c in c++?

krneki0001 ::

smash je izjavil:

ja kako pa ujet napake, o katerih se ti sanja ne, da obstajajo?


S testiranjem.

Marat je izjavil:

... Apple je pač naredil svojo kopijo pythona :)


Jaz bi rekel svojo verzijo ruby-ja.
Asrock X99 Extreme 4 | Intel E5-2683V4 ES | 64GB DDR4 2400MHz ECC |
Samsung 250GB M.2 | Asus 1070 TI | 850W Antec | LC Tank Buster

Zgodovina sprememb…

smash ::

krneki0001 je izjavil:

smash je izjavil:

ja kako pa ujet napake, o katerih se ti sanja ne, da obstajajo?


S testiranjem.

Marat je izjavil:

... Apple je pač naredil svojo kopijo pythona :)


Jaz bi rekel svojo verzijo ruby-ja.


ti lahko testiraš cel mesec, pa potem v produkciji fašeš napako že prvi teden, ki je test ni sproduciral

techfreak :) ::

Pri ObjC pri asinhronih metodah imas naceloma success/failure callback, pri sinhronih ti pa pac vrne YES/objekt ce je uspesen in NO/nil ce faila. V primeru faila pa lahko skoraj vedno (pac ce metoda podpira) dobis podatke o napaki preko kazalca na NSError*.

Torej ce malo pazis kaj delas in zadeve se testiras ne bi smelo priti do napak.

pegasus ::

smash je izjavil:

ti lahko testiraš cel mesec, pa potem v produkciji fašeš napako že prvi teden, ki je test ni sproduciral
Zato mi niso všeč unit testi, ki pokrivajo samo znane napake, neznanih pa ne. Veliko raje imam formal verification, ki matematično natančno pokaže, ali nek kos kode deluje tako in samo tako, kot se od njega pričakuje.

noraguta ::

krneki0001 je izjavil:

smash je izjavil:

ja kako pa ujet napake, o katerih se ti sanja ne, da obstajajo?


S testiranjem.

Marat je izjavil:

... Apple je pač naredil svojo kopijo pythona :)


Jaz bi rekel svojo verzijo ruby-ja.

ne bo šlo vse s testiranjem, maš en kup napak katere so povsem sistemske(prekinitve, zaklenjeni dostopi do datotek in podobno).
Exceptioni so bolj ali manj namenjeni lovljenju teh napak kot pa urejanju program flowa.
So pa seweda alternativee kot so monade, signali v lispu pa še kaj.
Pust' ot pobyedy k pobyedye vyedyot!

Mavrik ::

pegasus je izjavil:

smash je izjavil:

ti lahko testiraš cel mesec, pa potem v produkciji fašeš napako že prvi teden, ki je test ni sproduciral
Zato mi niso všeč unit testi, ki pokrivajo samo znane napake, neznanih pa ne. Veliko raje imam formal verification, ki matematično natančno pokaže, ali nek kos kode deluje tako in samo tako, kot se od njega pričakuje.


Katere izmed takih jezikov pa uporabljate v produkciji? Kak ML? D?

techfreak :) je izjavil:

Pri ObjC pri asinhronih metodah imas naceloma success/failure callback, pri sinhronih ti pa pac vrne YES/objekt ce je uspesen in NO/nil ce faila. V primeru faila pa lahko skoraj vedno (pac ce metoda podpira) dobis podatke o napaki preko kazalca na NSError*.

Torej ce malo pazis kaj delas in zadeve se testiras ne bi smelo priti do napak.


A ti res praviš da je prastari Cjevski pattern vračanja statusa... nekaj kar preprečuje napake če "paziš kaj delaš"? Ker zgodovina in realnost tega nikakor ne potrjuje in če bi to tvoje bilo res, ne bi rabili testiranja in ostalih postopkov za povečevanje zanesljivosti kode.

Še en zanimiv datapoint: StackOverflow.

Izkaže se da Swift niti ni tako zelo hiter razen če precej varnosti izklopiš med prevajanjem.
The truth is rarely pure and never simple.

Zgodovina sprememb…

  • spremenil: Mavrik ()

techfreak :) ::

Mavrik je izjavil:

A ti res praviš da je prastari Cjevski pattern vračanja statusa... nekaj kar preprečuje napake če "paziš kaj delaš"? Ker zgodovina in realnost tega nikakor ne potrjuje in če bi to tvoje bilo res, ne bi rabili testiranja in ostalih postopkov za povečevanje zanesljivosti kode.

Načeloma ta način uporabljajo tudi modernejši jeziki, kot recimo go. Pri Cju je predvsem problem ker pomnilnik direktno manipuliraš, ne pa toliko v načinu preverjanja napak.

Mavrik je izjavil:

Še en zanimiv datapoint: StackOverflow.

Izkaže se da Swift niti ni tako zelo hiter razen če precej varnosti izklopiš med prevajanjem.

Apple je tako pretiraval oz. pač v večini primerov ni takšnega pohitrenja, še vseeno pa je hitrejši, predvsem tam kjer uporabljaš izključno swift, brez klicanja ObjC kode in objc_msgSend.

Sicer se še nisem resno spravil k testiranju jezika, mi je pa na prvi odtis všeč in ima iz programerskega stališča kar nekaj prednosti.

noraguta ::

techfreak :) je izjavil:

Mavrik je izjavil:

A ti res praviš da je prastari Cjevski pattern vračanja statusa... nekaj kar preprečuje napake če "paziš kaj delaš"? Ker zgodovina in realnost tega nikakor ne potrjuje in če bi to tvoje bilo res, ne bi rabili testiranja in ostalih postopkov za povečevanje zanesljivosti kode.

Načeloma ta način uporabljajo tudi modernejši jeziki, kot recimo go. Pri Cju je predvsem problem ker pomnilnik direktno manipuliraš, ne pa toliko v načinu preverjanja napak.

Mavrik je izjavil:

Še en zanimiv datapoint: StackOverflow.

Izkaže se da Swift niti ni tako zelo hiter razen če precej varnosti izklopiš med prevajanjem.

Apple je tako pretiraval oz. pač v večini primerov ni takšnega pohitrenja, še vseeno pa je hitrejši, predvsem tam kjer uporabljaš izključno swift, brez klicanja ObjC kode in objc_msgSend.

Sicer se še nisem resno spravil k testiranju jezika, mi je pa na prvi odtis všeč in ima iz programerskega stališča kar nekaj prednosti.

go pa res ni sodoben programski jezik je nekoliko predelan c. z nekaj hudo bolnimi idejami, sploh kar se tiče konkurenčnosti. napalamudijo celo goro primitivov za izvajanje konkurenčne kode izpustijo pa nemutirajoče spremenljivke, skratka bolano.

z retunanjem kode napake pa načeloma ni nič narobe, dokler dela sistem kar je predvideno, ko pa ne je pa povsem neuporaben. tu pa vskočijo izjeme.
Pust' ot pobyedy k pobyedye vyedyot!

noraguta ::

vostok_1 je izjavil:

Invictus je izjavil:

vostok_1 je izjavil:

Meni ni nikoli blo jasno zakaj morajo biti programski jeziki v splošnem tako zaguljeni.

Zato ker se ti najbrž ne sanja preveč o stvareh ki se dogajajo spodaj, pod površjem ...

Če bi kdaj programiral v asemblerju ali celo mikro kodo za CPU, bi videl da je večina stvari povsem logično zastavljena.

In ker vsak razvijalec vleče zadevo s sabo od pamtiveka ...


Šure, ko gre za zahtevnejše zadeve je fanj imeti na razpolago vso moč. Ampak za običajnega programerja ali splošno programersko izobraženost je večina jezikov plain old silly.

ker jezik kot tak s seboj nosi poleg osnovnih primitivov gramatike tudi celo vrsto memoizacij, katere mora razčlenjevalnik prepoznat da sestavi ustrezno sintaktično drevo. in trenutno je tehnologija razčlenjevalnikov parserjev omejena predvsem na eno kontekstno domeno. zato obstajajo povsem preprosti in razumljivi jeziki bolj v strogo določenih domenah(recimo mathematica, logo, log parserji , različni DSLi etc...). V splošno namenskih jezikih pa smo omejeni bolj ali manj zgolj na en univerzalen jezik.
Komercialno kolikor vem proba stvar premakniti naprej JetBrains s svojim projektom nitra.
http://confluence.jetbrains.com/display...
kateri omogoča zontarj enega kompajlerja različne sintakse ter posledično tudi prinaša v jezik različne kontekstualne memoizacije. S tem ti ni potrebno vse podati eksplicitno ampak se določene stvari vedo same po sebi. Ampak to je le prvi korak potem bo potrebno še kar nekaj dela na sami semiotiki oz semantiki šmorna katerega bo pridelal razčlenjevalnik kode.
Pust' ot pobyedy k pobyedye vyedyot!

krneki0001 ::

noraguta je izjavil:

krneki0001 je izjavil:

smash je izjavil:

ja kako pa ujet napake, o katerih se ti sanja ne, da obstajajo?


S testiranjem.

ne bo šlo vse s testiranjem, maš en kup napak katere so povsem sistemske(prekinitve, zaklenjeni dostopi do datotek in podobno).
Exceptioni so bolj ali manj namenjeni lovljenju teh napak kot pa urejanju program flowa.
So pa seweda alternativee kot so monade, signali v lispu pa še kaj.


Vse se da s testiranjem. Tudi sistemske prekinitve, zaklenjene baze, zaklenjeni page-i od baze in zaklenjeni dostopi do datotek. Zato pa se software nekaj časa testira in v večih okoljih.

Sam sem navajen na 4 okolja - developer, kjer razvijam, testno, kjer stestiram skupaj z uporabnikom, predprodukcijsko kjer se program sam testira v okolju enakem produkciji in na koncu produkcija (po bnekje šestih mesecih testiranj in preko miljona različnih vnosov (pravilnih, napačnih, z blokirano bazo, z blokiranimi datotekami in simulirano sistemsko napako, da je nekaj na siatemu narobe).
Asrock X99 Extreme 4 | Intel E5-2683V4 ES | 64GB DDR4 2400MHz ECC |
Samsung 250GB M.2 | Asus 1070 TI | 850W Antec | LC Tank Buster

noraguta ::

krneki0001 je izjavil:

noraguta je izjavil:

krneki0001 je izjavil:

smash je izjavil:

ja kako pa ujet napake, o katerih se ti sanja ne, da obstajajo?


S testiranjem.

ne bo šlo vse s testiranjem, maš en kup napak katere so povsem sistemske(prekinitve, zaklenjeni dostopi do datotek in podobno).
Exceptioni so bolj ali manj namenjeni lovljenju teh napak kot pa urejanju program flowa.
So pa seweda alternativee kot so monade, signali v lispu pa še kaj.


Vse se da s testiranjem. Tudi sistemske prekinitve, zaklenjene baze, zaklenjeni page-i od baze in zaklenjeni dostopi do datotek. Zato pa se software nekaj časa testira in v večih okoljih.

Sam sem navajen na 4 okolja - developer, kjer razvijam, testno, kjer stestiram skupaj z uporabnikom, predprodukcijsko kjer se program sam testira v okolju enakem produkciji in na koncu produkcija (po bnekje šestih mesecih testiranj in preko miljona različnih vnosov (pravilnih, napačnih, z blokirano bazo, z blokiranimi datotekami in simulirano sistemsko napako, da je nekaj na siatemu narobe).

ne bluzi to gre kvečjemu pri dinamičnih jezikih, pri kompajliranih pa aplikacija odleti kot knof na gatah. in nisi super programer ker super programerjev ni. kaj pozabiš, mudi se stvar gre v producijo na koncu je pa štala. videno, sprobano tko osebno kot tudi v vseh knjigah in vodičih, kateri se ukvarjajo z dobrimi praksami.
Pust' ot pobyedy k pobyedye vyedyot!

Zgodovina sprememb…

  • spremenilo: noraguta ()
«
1
2


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Priljubljenost C-ja na petnajstletnem dnu

Oddelek: Novice / Ostala programska oprema
3111647 (7673) Invictus
»

Microsoft na Buildu 2015 zlasti o Windows 10 (strani: 1 2 )

Oddelek: Novice / Operacijski sistemi
6230789 (24537) Lonsarg
»

Applov nov programski jezik Swift (strani: 1 2 )

Oddelek: Novice / Apple iPhone/iPad/iPod
7233865 (28426) Kocka
»

Applove novosti z začetka WWDC - iOS

Oddelek: Novice / Apple iPhone/iPad/iPod
3919550 (17406) PrimozR
»

App Store dve leti in pet milijard aplikacij pozneje

Oddelek: Novice / Android
3511560 (10146) MrStein

Več podobnih tem