Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Onko PHP vielä opettelemisen arvoinen?

Sivun loppuun

AtskaFin [21.06.2019 17:27:19]

#

Niinkuin otsikossa lukee:

Onko PHP vielä opettelemisen arvoinen kieli, vai onko se jo nähnyt parhaat päivänsä?

noutti [21.06.2019 19:55:37]

#

Kehittyy koko ajan. Ne parhaat päivät ovat edessä päin, kun pahimmat päivät olivat tosin noin kymmenen vuotta sitten

vesikuusi [22.06.2019 14:51:34]

#

Suomessa ja muuallakin maailmassa on paljon PHP-softaa ja töitä PHP-koodareille. Eli kyllä on.

walkout_ [22.06.2019 17:28:01]

#

PHP on opettelemisen arvoinen kieli. On firmoja jotka sillä kehittää omia kokonaisia ERP-sovevelluksia eikä vain käytä valmiita sellaisia ja jos sellaiseen firmaan pääsee niin hyvät ovat kk-liksat.

Grez [22.06.2019 18:37:37]

#

Käytännössähän absoluuttisesti ajattellen aina on hyötyä osata jokin asia.

Toisaalta aikaa on aina rajallisesti, eli pitää valita minkä asioiden opettelemiseen sen vähäisen aikansa käyttää.

Ja tästä päästään sitten siihen, että on ihan täysin kiinni siitä mitä haluaa tehdä, että kannattaako juuri PHP:tä opetella.

Jos haluaa vaikka pelikoodariksi, niin on vaikeaa nähdä että juuri PHP:n opetteluun kannattaisi satsata. Kysyjä ei omista tavoitteistaan juuri kerro.

Edes tulevalle weppikoodarille PHP ei ole ainoa vaihtoehto, mutta kannattanee sitä ainakin sen verran vilkuilla että tietää mitä se tarjoaa. Äkkiähän sen sitten opettelee jos osaa ylipäätään koodata ja jos tulee tilanne jossa se on toimivin vaihtoehto.

The Alchemist [27.06.2019 05:01:53]

#

Php on siitä outo kieli, että sen natiivikirjasto on sekava ja huonosti suunniteltu, ja freimikset kirjoittavat sen hyvin paljon uusiksi oliomallisesta näkökulmasta. Olisi hyödyllisempää opetella käyttämään yhtä freimistä ja kiinnittää vähemmän huomiota varsinaisen php:n funktioiden nimien ja sekavien argumenttilistausten oppimiseen. Loppuhan on vain sitten geneeristä silmukkaa, if-elseä ja patterneja, jotka löytyvät kaikista muistakin kielistä. Ja jos ollaan rehellisiä, niin php laahannee muiden kielien perässä kehittyneempien ominaisuuksien osalta.

Itse kun teen työkseni pääosin php:tä ja muutenkin olen harrastanut sitä jo 10+ vuotta, niin en välitä harrastuskäytössä siitä ollenkaan. Minua kiinnostavat sellaiset kielet, joilla voin rakentaa muutakin kuin kuppaisia staattisia nettisivuja.

Webbikoodari voi valita myös pythonista, javascriptistä ja viestihistoriasi perusteella osaamastasi c#:sta. Ja tietysti javasta. Nämä kielet ovat ainakin sellaisia mainstreameja kieliä, joita voi hyödyntää muunkinlaiseen ohjelmointiin.

Muitakin vaihtoehtoja on mutta niistä kuulee harvemmin ja varsinkin työllistymisen kannalta ovat huonoja vaihtoehtoja muuten kuin kolmanneksi tai neljänneksi sivukieleksi.

Tronic [01.07.2019 12:08:15]

#

Koodareita rekrytessäni olen lähinnä antanut miinusta PHP-taitojaan esitteleville hakijoille, ja vaikka kieli on tosiaan kehittynyt paljon takavuosista, on hankala keksiä mitään hyvää syytä sen opiskeluun.

Nykyisin jokaisen koodarin olisi syytä osata Javascript (vähintäänkin selaimen puolella käytettynä) ja Python (paras yleiskieli jokseenkin kaikkeen tiedonkäsittelyyn).

Ennen vuotta 2015 hankitut Javascript-taidot voi unohtaa aikalailla kokonaan, sillä kieli on muuttunut täysin erilaiseksi. Erityisesti, jos tämä koodi näyttää oudolta, on tietoja syytä päivittää:

'use strict'
const f = ev => {
    ev.preventDefault()
    let i = 1
	console.log(i + 1)
}

Serveripäässä NodeJS (Express) on hyvin suosittu vaihtoehto ja Pythonilla kannattaa kokeilla Sanicia. Nämä modernit vaihtoehdot pärjäävät jopa C/Go/Rust-ohjelmille suorituskyvyssä, mutta ovat paljon helpompia käyttää.

Pieni esimerkkipalvelin Sanicilla:

#!/usr/bin/env python3
#!pip3 install sanic pyhtml

from sanic import Sanic
from sanic.response import html, json

app = Sanic()

@app.get('/')                         # http://localhost:8000/
def front_page(request):
    url = app.url_for("person_page", name="Sonja", age=48)
    doc = page_template(request.host, request.ip, url)
    return html(doc)

@app.get('/person/<name>/<age:int>')  # http://localhost:8000/person/Jaska/27
def person_page(request, name, age):
    return json({name: age})

def page_template(host, ip, url):
    from pyhtml import html, meta, title, a, p
    return html(
        meta(charset="UTF-8"),
        title("My site " + host),
        p("Hello " + ip + "! Try our ", a(href=url)("JSON API")),
    )

if __name__ == '__main__':
    app.run(port=8000, debug=True, autoreload=True)

Kätevää on, että ohjelman voi suoraan ajaa ja lähteä devaamaan (se myös lataa itsensä uudelleen aina muokkausten jälkeen, vaikka koodissa olisi ollut virheitä). Käytin HTML:n muotoiluun pyhtml:ää, ettei tarvitse tapella stringien escapoinnin kanssa. Suorituskyvystä vielä sen verran, että tämä sovellus tarjoili mun vanhalla Macbookilla etusivua 18000 req/s ja person-sivua 43000 req/s ilman ainoatakaan virhettä (debug=False, access_log=False, workers=4).

vesikuusi [01.07.2019 12:47:17]

#

Tronic kirjoitti:

Koodareita rekrytessäni --

Puhutko nyt Web-koodareista nimenomaan? Viestistäsi saa sellaisen käsityksen että puhut yleisesti kaikista koodareista. Softa on niin laaja ala että mielestäni on mahdotonta määritellä, mitä samoja kieliä kaikkien koodareiden tulisi osata. Olet muutenkin luetellut vain erittäin korkean abstraktiotason kieliä.

The Alchemist [02.07.2019 05:51:51]

#

Tronic kirjoitti:

Kätevää on, että ohjelman voi suoraan ajaa ja lähteä devaamaan (se myös lataa itsensä uudelleen aina muokkausten jälkeen, vaikka koodissa olisi ollut virheitä).

Kuulostaa aivan php:ltä!

Tronic kirjoitti:

Käytin HTML:n muotoiluun pyhtml:ää, ettei tarvitse tapella stringien escapoinnin kanssa.

Yleensä tosin käytetään jotain templatointikirjastoa, joka hoitaa mm. sanitoinnin automaattisesti tekemättä html-templojen rakentamisesta kuitenkaan yhtä vaivalloista kuin se imperatiivisella ohjelmointikielellä on.

Tronic kirjoitti:

Suorituskyvystä vielä sen verran, että tämä sovellus tarjoili mun vanhalla Macbookilla etusivua 18000 req/s ja person-sivua 43000 req/s ilman ainoatakaan virhettä (debug=False, access_log=False, workers=4).

Tämä oikeastaan osoittaa vain sen, miten nopeasti suorituskyky laskee kompleksisuuden kasvaessa. Ja nimenomaan ohjelmoijan oman koodin myötä, ei välttämättä valitun freimiksen eikä kielen vuoksi. Mutta tuohon kun lisää yhden tietokantakyselyn johonkin, niin requestien määrästä putoaa varmaan ainakin yksi nolla pois saman tien...

noutti [02.07.2019 12:10:11]

#

The Alchemist kirjoitti:

Itse kun teen työkseni pääosin php:tä ja muutenkin olen harrastanut sitä jo 10+ vuotta, niin en välitä harrastuskäytössä siitä ollenkaan. Minua kiinnostavat sellaiset kielet, joilla voin rakentaa muutakin kuin kuppaisia staattisia nettisivuja.

Implikoitko tässä, että PHP:lla ei pysty tekemään esimerkiksi pelkästään REST-rajapintaa?

Tronic kirjoitti:

Koodareita rekrytessäni olen lähinnä antanut miinusta PHP-taitojaan esitteleville hakijoille, ja vaikka kieli on tosiaan kehittynyt paljon takavuosista, on hankala keksiä mitään hyvää syytä sen opiskeluun.

Nykyisin jokaisen koodarin olisi syytä osata Javascript (vähintäänkin selaimen puolella käytettynä) ja Python (paras yleiskieli jokseenkin kaikkeen tiedonkäsittelyyn).

Ennen vuotta 2015 hankitut Javascript-taidot voi unohtaa aikalailla kokonaan, sillä kieli on muuttunut täysin erilaiseksi. Erityisesti, jos tämä koodi näyttää oudolta, on tietoja syytä päivittää:

Serveripäässä NodeJS (Express) on hyvin suosittu vaihtoehto ja Pythonilla kannattaa kokeilla Sanicia. Nämä modernit vaihtoehdot pärjäävät jopa C/Go/Rust-ohjelmille suorituskyvyssä, mutta ovat paljon helpompia käyttää.

Leikkelin hieman pois. Python on toki hyvä ja JS on standardi tällä hetkellä. Ennen vuotta 2015 opitut JS taidot voi unohtaa? Mitä ihmettä tarkoitat tällä? Onko loopit, if elset ja vaikka switch caset muuttuneet tässä vuosien varrella niin, että vuoden 2005 js eroaa vuoden 2019 syntaksista? Arkkitehtuuri on toki muuttunut ja luokkien käyttö on ilmestynyt, mutta ei se nyt ihan noinkaan mustavalkoista ole. Ja tämän lisäksi jos annat miinusta PHP:ta taitaville niin saattaa rekrytessä jäädä aika monen monta todella hyvääkin koodaria sivuun pelkästään oman ennakkoasenteesi johdosta.

Lebe80 [02.07.2019 12:17:32]

#

noutti kirjoitti:

Onko loopit, if elset ja vaikka switch caset muuttuneet tässä vuosien varrella niin, että vuoden 2005 js eroaa vuoden 2019 syntaksista?

Itseasiassa juuri näissä on käynyt sellainen hassu juttu, että ovat todellakin lyhentyneet huomattavasti. Vanha syntaksi toimii edelleen, mutta en voi kirjoittaa lyhyemminkin.

noutti [02.07.2019 12:21:40]

#

Lebe80 kirjoitti:

(02.07.2019 12:17:32): ”– –” Itseasiassa juuri näissä on käynyt sellainen...

someVar ? something1 : something2

=

if (someVar) {
 return something1;
} else {
 return something2;
}
if (someVar === true) {
 return something1;
} else {
 return something2;
}

Tismalleen samat setit kaikissa. Jokainen yhtä validi.

The Alchemist [04.07.2019 05:21:35]

#

noutti kirjoitti:

The Alchemist kirjoitti:

Itse kun teen työkseni pääosin php:tä ja muutenkin olen harrastanut sitä jo 10+ vuotta, niin en välitä harrastuskäytössä siitä ollenkaan. Minua kiinnostavat sellaiset kielet, joilla voin rakentaa muutakin kuin kuppaisia staattisia nettisivuja.

Implikoitko tässä, että PHP:lla ei pysty tekemään esimerkiksi pelkästään REST-rajapintaa?

Samalla periaatteella rest-rajapintakin toimii, eli backend puskee ulos jotain dataa ja selain näyttää sen sellaisenaan ilman interaktiivisuutta.

noutti kirjoitti:

Ennen vuotta 2015 opitut JS taidot voi unohtaa? Mitä ihmettä tarkoitat tällä? Onko loopit, if elset ja vaikka switch caset muuttuneet tässä vuosien varrella niin, että vuoden 2005 js eroaa vuoden 2019 syntaksista? Arkkitehtuuri on toki muuttunut ja luokkien käyttö on ilmestynyt, mutta ei se nyt ihan noinkaan mustavalkoista ole.

Eivät nuo kontrollirakenteet ole kuin häviävän pieni osa kielestä, ja varsinkin javascriptin kohdalla ne ovat (olleet) jopa melko merkityksettömiä varsinaisen ohjelmakoodin kulussa. Kas kun ne eivät pärjää asynkronisen koodin kanssa.

Tai siis eivät pärjänneet. Oikeastaan Tronicin väite kaipaisi sellaista tarkennusta, että osin uudet kielen ominaisuudet ovat asettaneet koodareille uusia vaatimuksia, mutta osin vaatimukset ovat myös konvergoineet "perinteisten" ohjelmointikielten kanssa, koska vanhaa callback-helvettiä ei tarvitse välttämättä osata hallita enää, ja koodia voi kirjoittaa kuin mitään asynkronisuutta ei olisikaan.

AtskaFin [15.07.2019 23:07:31]

#

Ai onko tuo ylempi parempi vaihtoehto?

const f = ev => { ... }

function f (ev) { ... }

The Alchemist [16.07.2019 06:47:00]

#

Yksi on parempi joskus ja toinen toiste, ei mulla muuta.

Tronic [16.07.2019 10:36:36]

#

Nuolisyntaksissa määrittelypaikan ulkopuoliset this ja arguments välittyvät funktioon sellaisinaan, kun taas function-määrittelyssä ne saavat aina funktiota kutsuttaessa arvot. Kumpaakin tapaa tarvitaan ajoittain.

Lisäksi function-nimi löytyy jo ennen määrittelyään, kun taas nuolinotaatiolla tehtyä nimeä voi käyttää vasta myöhemmillä riveillä:

foo()  // Toimii
bar()  // Virhe: bar ei (vielä) määritelty
function foo() { console.log('foo') }
const bar = () => console.log('bar')

Nuotin mainitsemat samanlaisina pysyneet rakenteet ovatkin olleet samat 1970-luvun C-kielestä alkaen, joskin uudemmissa kielissä puolipisteet ovat jäämässä pois. Loopeissa kuitenkin on paljon uuttakin, esimerkiksi

for (const i in ['foo', 'bar']) console.log(i)
for (const val of ['foo', 'bar']) console.log(val)
for (const [k, v] of Object.entries({foo: 123, bar: 456})) console.log(k, v)

Tuossa oli aiemmin puhetta myös eri ohjelmointikielistä. Python ja Javascript ovat sellaisia peruskieliä, joita on osattava - vähän vastaavalla tapaa kuin englantia on nykymaailmassa osattava - vaikka oma kieli olisikin jokin muu.

Javascriptin osalta syy on selvä: selaimet eivät (ilman esikääntäjiä) suorita mitään muuta, ja melkolailla kaikki on tavalla tai toisella tekemisissä selainten kanssa.

Python toisaalta on monilla aloilla (kuten tekoälyssä) jo ylivoimainen valtakieli -- Googlen valtava panostus Pythoniin on varmasti osasyy siihen miksi se on nykyään maailman 2. suosituin kieli (Githubin tilastossa, Javascriptin jälkeen). Pythonilla on todella kätevää ratkaista kaikenlaisia ongelmia, ja kiitos GPU-laskennan ja viimeisen päälle optimoitujen kirjastojen, ohjelmat usein vieläpä pyörivät nopeammin kuin C:llä itse tehty vastaava.

Lisäksi - jopa ykköskielenä - voi ja urakehityksen kannalta varmaan edullistakin on olla jokin muu, tätä peruspakettia omalla erikoistumisalueella täydentävä kieli. Nykyisissä imperatiivisissa kielissä[1] ovat perusperiaatteet ja useimmissa syntaksikin sen verran samankaltaisia, että useiden kielten opiskelu on helppoa.

1) Tarkoittaa kaikkia tavallisia ohjelmointikieliä, vastakohtana funktionaalisille (Lisp, Haskell, Erlang, Elixir, ...), logiikkaohjelmoinnille (Prolog, Potassco) tai VHDL:lle ym, joilla on erittäin rajatut käyttökohteensa ja aivan omanlaisensa ajattelutavat.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta