Kuinka voitin vastustuskykyni tulla Pythonista

Kuva Max Nelson on Unsplash

Yli kymmenen vuoden ajan tärkein äidinkieleni on ollut C #. Olen käyttänyt sitä versiosta 1 lähtien ja rakastin matkaa ominaisuuksien, kuten geneeristen tuotteiden, nimettömyyden, LINQ: n ja asyncin, läpi ja yhdistäen tämän suunnittelumallien, SOLID-periaatteiden, arkkitehtonisten tyylien ja TDD / BDD: n kanssa, asun ja hengitän C #: ta. Ajattelin snobishisesti käsin skriptikieliä ...

Kuinka voit kutsua itseäsi ohjelmistosuunnittelijaksi ja käyttää komentosarjojen kieltä? Doh!

Työskentelen taloudellisessa organisaatiossa kaupungissa. Valitut kielet ovat Java ja C #, sekä Front and Back Office -sovelluksissa. Tietotekniikasta ja koneoppimisesta on tulossa kaksi hypedistä nykyaikaista tekniikkaa, ja ne ovat nyt skaalautuvat myös rahoituslaitoksissa. Koska taustani on tietojenkäsittelytieteessä (väitöskirjan kanssa tiedonlouhinnasta ja tekoälystä), ajattelin, että minun pitäisi tarkistaa se ...

Minun piti päivittää matemaattiset tietoni ja aloittavan ML: n Pluralsightista ja toisen Pythonista jälkeen en ymmärtänyt, mistä koko meteli oli kyse.

Miksi käyttää Pythonia? Voin tehdä kaikki nämä asiat C #: ssä ... ja itse asiassa paljon paremmin!

Sanoin ylpeänä kollegalleni: "En ole" cowboy-kooderia "... Et voi kirjoittaa SOLID Python -sovellusta.
Ja hän sanoi: ”Miksi ei? SOLID ovat vain periaatteita. Voit käyttää niitä millä tahansa kielellä ”.

Tämä avasi silmäni minulle.

Aloitin Pythonin tutkimuksen: Se on TIOBE: n mukaan kolmella parhaalla ohjelmointikielellä (joulukuusta 2018 alkaen). StackOverflow vahvistaa, että se on ylittänyt C #: n. Samoin HackerRank-raportti.

Mitä? Minulta puuttuu temppu?

Näin matkamme Pythonista-ryhmään alkoi… Minun täytyi olla vakuuttunut siitä, että se oli arvokasta.

Tässä on vastaukset kahteen tärkeimpaan varaukseesi, ts .:

  1. Rakastan uraani rahoitusalalla. Mikä saa finanssijärjestöt käyttämään Pythonia?
  2. En ole 'cowboy' ('cowgirl'). Sovelletaanko SOLID-periaatteita Pythonissa?

Miksi finanssijärjestöt käyttävät Pythonia?

Tutkimukseni osoitti minulle, että syitä on useita:

- Nopea aika markkinoille: Voit siirtyä nollasta sankariksi melko nopeasti. On olemassa runsaasti kirjastoja, joissa on melkein kaikki mitä koskaan käytät. Python-ohjelmien kirjoittaminen on kuin tornin rakentamista Legon kanssa. Löydät yksittäiset lohkot, ja sinun tarvitsee vain liimata ne yhteen rakentaaksesi algoritmi.

- Bridges Economics and IT: Kvanttien ja tekniikan taitavat liikemiehet ymmärtävät ja myös kirjoittavat algoritmeja Pythonissa. Kehittäjät voivat sitten integroida sen kokonaiseen pinon sovellukseen.

- Sisällyttää analyysin: Anaconda toimitetaan Jupyter-kannettavan asennuksen mukana. Tämä on jokaisen kehittäjän ja tietotieteilijöiden leikkipaikka tietojen analysoimiseksi ja visualisointien luomiseksi. Kaupankäynti, markkinahinnat, rahoitusriskien mallintaminen ovat joitain sovellettavia alueita.

Sovelletaanko SOLID-periaatteita Pythonissa?

Kyllä he tekevät! Periaatteet eivät ole tavoite itsessään. Pikemminkin ne ovat ohjeita paremman ja puhtaamman koodin kirjoittamiseen. Niiden soveltamisessa toiminnallisiin / dynaamisiin kieliin ei kuitenkaan ole hopeamuotoista.

Siitä huolimatta olen keksinyt seuraavan:

- Yksittäinen vastuu: Luokalla tulisi olla vain yksi syy muutokseen.

Tämä on melko suoraviivaista, kerää vain toiminnot, jotka muuttuvat samasta syystä yhdeksi luokkaksi / menetelmäksi / kokonaisuudeksi. Sama kuin C #.

- Avoin suljettu: luokkien tulisi olla avoinna laajennusta varten ja suljettu muutoksia varten. Perus / abstrakti luokka on suljettu muutoksia varten. Konkreettiset alaluokat luodaan muuttamaan niiden käyttäytymistä.

Monia tapoja tämän saavuttamiseksi ovat: perintö, koostumus, suunnittelumallit (sisustaja, strategia jne.). Python mahdollistaa luokkien usean perimisen, paitsi että se on sama kuin C #.

- Liskov-substituutio: Jos S on T: n alatyyppi, tyypin T kohteet voidaan korvata tyypin S objekteilla muuttamatta mitään T.: n toivottuja ominaisuuksia. Toisin sanoen johdetun luokan tulisi laajentaa vanhempaa luokkaansa muuttamatta käyttäytymistä.

Niin kauan kuin pystyt erottamaan eron koostumuksen ja perinnön välillä, Bob on setäsi. Muista myös apinoiden korjaaminen, koska se rikkoo varmasti tätä periaatetta.

- Rajapintojen erottelu: Asiakkaita ei tule pakottaa riippuvaisiin rajapinnoista, joita he eivät käytä.

Pythonissa ei ole rajapintoja, joten tämä ei ole liian merkityksellinen. Mutta yleensä kyse on luokkien ja paljastettujen menetelmien minimoimisesta sekä kyvystä periä useita konkreettisia luokkia tarjotakseen asiakkaille erityinen käyttäytyminen.

- Riippuvuusmuutos: Korkean tason moduulien ei pitäisi olla riippuvaisia ​​matalan tason moduuleista. Molempien tulisi olla riippuvaisia ​​abstraktioista. Abstraktioiden ei pitäisi olla riippuvaisia ​​yksityiskohdista - yksityiskohtien tulisi olla riippuvaisia ​​abstraktioista.

Dynaamisena kielenä Python ei vaadi abstraktioiden käyttöä irrottamisen helpottamiseksi.

Toivoin löytäväni aloittaessani tämän analyysin, että C # voitti Python-kielen taistelun, mutta tajusin, että se on huono ohjelmoija, jonka kehitystyökalupakki sisältää vain yhden ohjelmointikielen!

Haluaisin henkilökohtaisesti käyttää C #: ta rakentamaan laajamittaisen yrityssovelluksen (varsinkin palvelinpuolella), mutta olen täysin muuttunut Pythoniksi nopeamman kehityksen ja konseptien todistamiseksi - pääasiassa kun kyse on Data Science tai Machine Learning -alueista!

Kiitos, että luit ensimmäisen artikkelini