Säveltämisohjelmisto: Kirja

Tupakointikuutiot savuksi - MattysFlicks - (CC BY 2.0)
Huomaa: Tämä on osa ”Composing Software” -kirjaa, joka aloitti elämän täällä blogin kirjoitussarjana. Se kattaa toiminnalliset ohjelmointitekniikat ja koostumukselliset ohjelmistotekniikat JavaScriptillä (ES6 +) alusta alkaen.

"Composing Software", Java-blogissa toimivasta ohjelmoinnista ja ohjelmistojen koostumuksesta koostuva osuma-blogisopimus on nyt Leanpubin myydyin kirja.

Aloitin 18. helmikuuta 2017 blogin kirjoittamisen toiminnallisesta ohjelmoinnista. ”Funktionaalisen ohjelmoinnin nousu ja lasku ja nousu” oli tarkoitus toimia johdantoartikkelina ohjelmistojen koostumusta käsittelevälle artikkelisarjalle. Minulla ei ollut aavistustakaan kirjoittaessani, että se houkuttelee yli 100 000 lukijaa tai että seuratut artikkelit houkuttelevat yli miljoona kokonaislukemaa tai että siitä tulee kirja ja hypätä Leanpub-myydyimpien tuotteiden listalle viikolla, jolloin se oli ilmoitti.

Vilpittömät kiitokset JS Cheerleaderille, joka teki kirjan paremmaksi monin tavoin luetteloimiseksi. Jos pidät tekstiä luettavana, se johtuu siitä, että hän kaatoi huolellisesti jokaisen sivun ja tarjosi oivaltavaa palautetta ja kannustusta joka vaiheessa. Ilman hänen apua et lukeisi tätä nyt.

Kiitos blogin lukijoille, joiden tuki ja innostuneisuus auttoivat meitä kääntämään pienen blogin postisarjan ilmiöksi, joka houkutteli miljoonia lukuja ja antoi tarvittavan vauhdin muuttaa se kirjaksi.

Kiitos tietotekniikan legendoille, jotka tasoittivat tietä.

”Jos olen nähnyt kauempana, se seisoo jättiläisten harteilla.” ~ Sir Isaac Newton

Kaikki ohjelmistokehitys on koostumusta: Monimutkaisen ongelman jakaminen pienemmiksi osiksi ja sitten pienempien ratkaisujen yhdistäminen sovelluksen muodostamiseksi.

Mutta huomasin haastatellessani ohjelmistokehitystyön ehdokkaita, melkein kukaan niistä ei pystynyt kuvailemaan, mikä koostumus on ohjelmiston yhteydessä. Kun kysyin haastatteluissa “mikä on funktion koostumus?” Tai “mikä on esineiden koostumus?”, Sain… sakset. Sirkat. Ei mitään.

Kuinka tämä voisi olla? Kuinka 99% ammattimaisista kehittäjistä - jotkut, joilla on yli 10-vuotinen ohjelmistokehityskokemus - eivät voisi tietää määritelmiä tai esimerkkejä ohjelmistosuunnittelun kahdesta peruselementistä? Jokainen säveltää toiminnot ja esineet ohjelmistojen rakentamisprosessissa päivittäin, joten kuinka niin monet ihmiset eivät voisi ymmärtää näiden tekniikoiden perustaa?

Tosiasia, että sävellys ei yksinkertaisesti ole aihe, johon ihmiset kiinnittävät huomiota, opettavat hyvin tai oppivat. Minulle kävi ilmi, että ehkä siksi liian monimutkaiset asiat ovat ohjelmistokehittäjien joka päivä suurin virhe. Kun et tiedä kuinka sovittaa lego-lohkot yhteen, saatat rikkoa kanavateipin ja hullua liimaa ja käydä muttereita… ohjelmiston, joukkuetovereidesi ja käyttäjiemiesi vahingoksi.

Et voi päästä eroon ohjelmistojen luomisesta - näin ohjelmisto kootaan. Mutta jos et tee sitä tunnollisesti, teet sen huonosti, mikä johtaa paljon hukkaan vietyyn aikaan, rahahukkaan, virheisiin ja jopa kriittisiin ihmisten turvallisuuskysymyksiin. Kirjoitin tämän sarjan - ja kirjan - muuttaakseni sitä.

Blogiviestien ongelma on, että heillä ei ole koskaan ollut virallista hakemistoa. Tervetuloa “Composing Software: The Blog Posts” -sivun viralliseen blogikirjoitukseen.

  • Ohjelmiston säveltäminen: Johdanto
  • Muuttuvuuden Dao
  • Funktionaalisen ohjelmoinnin nousu ja lasku ja nousu
  • Miksi oppia funktionaalista ohjelmointia JavaScriptissä?
  • Puhtaat toiminnot
  • Mikä on toiminnallinen ohjelmointi?
  • Toiminnallisen ohjelmoijan Johdanto JavaScript-ohjelmaan
  • Korkeamman tason toiminnot
  • Curry ja funktion koostumus
  • Abstraktio ja sävellys
  • Toimijat ja luokat
  • monadit
  • OOP: n unohdettu historia
  • Objektin koostumus
  • Tehdastoiminnot
  • Toiminnalliset sekoitukset
  • Miksi sävellys on vaikeampaa luokkien kanssa
  • Kompostoitavat mukautetut tietotyypit
  • linssit
  • muuntimet
  • JavaScript-tyylin elementit
  • Pilkkaaminen on koodin haju

Eric Elliott on hajautettu järjestelmäasiantuntija ja kirjojen kirjoittaminen “Composing Software” ja “Programming JavaScript Applications”. DevAnywhere.io: n perustajana hän opettaa kehittäjille taitoja, joita he tarvitsevat etätyöskentelyyn ja työ- ja yksityiselämän tasapainon omaksumiseen. Hän rakentaa ja neuvoo kehitystyöryhmiä salaustekniikkaprojekteihin ja on osallistunut ohjelmistokokemuksiin Adobe Systemsille, Zumba Fitnessille, The Wall Street Journalille, ESPN: lle, BBC: lle ja huipputalostajille, mukaan lukien Usher, Frank Ocean, Metallica ja monille muille.

Hän nauttii kauko-elämäntavasta maailman kauneimman naisen kanssa.