Perché è importante che HTML e CSS non siano linguaggi di programmazione?


158

Esempio qui:

Quali lingue dovrei sapere se sono interessato a creare applicazioni Web?

Sì, capisco che HTML e CSS non sono completi di Turing. Sì, capisco che sono lingue dichiarative, non imperative. Ma perché le persone sono sempre in disordine con questo fatto pedante (e probabilmente ovvio) quando fanno una domanda su queste lingue?


32
Mi dà fastidio solo quando la gente lo mette sul curriculum. È solo peggio quando inseriscono jQuery accanto a JavaScript in "Esperienza linguistica:".
Josh K,

19
Mi sembra abbastanza ovvio: se ho bisogno di capire come assumere, o a chi assegnare a un determinato compito, devo sapere quali abilità hanno. Se il compito prevede l'implementazione di un algoritmo non lo darò a qualcuno che ha solo un background in HTML / CSS. Non ho intenzione di assegnare a qualcuno che ha solo un background per scrivere programmi a riga di comando C per scrivere un sacco di pagine Web complesse che devono funzionare su più browser. Non so se sei stato nella posizione di assumere o gestire persone, ma ti imbatti in molte persone che giurano che questi compiti sono intercambiabili.
Charles E. Grant,

8
I dati sono solo codice stupido e il codice è solo dati intelligenti: stackoverflow.com/questions/871833/…
Christoffer Hammarström

14
Le persone non riescono a comprendere la domanda del PO che in termini più schietti sarebbe: "Perché un certo tipo di twit, in una discussione su" linguaggi generalizzati ", sente la necessità di sottolineare che il CSS non è un linguaggio di programmazione ?" Prima di tutto, duh. Grazie. Chiunque conosca anche una modesta manciata di stupidi trucchi JavaScript lo capirà. La padronanza dei CSS significa qualcosa per un programmatore che è stato lì e l'ha padroneggiato? Oh si. Sì lo fa. Non mi interessa se stiamo programmando il prossimo rover su Marte, è un pareggio decisivo.
Erik Reppen,

7
XSLT è un caso interessante a cui pensare in questo contesto ...
Dan Diplo,

Risposte:


300

Qual è la differenza, davvero?

La vera e importante differenza tra un linguaggio di programmazione e questi altri linguaggi è questa:

HTML e CSS descrivono la presentazione , mentre i linguaggi di programmazione descrivono la funzione

Ho intenzione di illustrare il motivo per cui questa differenza è importante, ma quella pedanteria su questo tema è talvolta fuori luogo.

Una storia vera :

Una volta ho trascorso alcuni mesi a sviluppare un complesso sistema di gestione delle prestazioni utilizzando un linguaggio di programmazione "adeguato". Ha automatizzato il processo di raccolta dei dati da vari altri sistemi, eseguito varie manipolazioni su tali dati e quindi presentato i risultati in una semplice tabella.

Una volta che era in diretta, un senior manager ha visto uno strumento scritto per un'attività simile e ha chiesto se potevamo sostituire ciò che avevo scritto usando la loro alternativa. Inoltre, era sconvolto dal fatto che avevo trascorso settimane a sviluppare la mia soluzione, in cui questa nuova app era stata scritta in pochi giorni.

Ulteriori indagini hanno rivelato che l'opzione preferita del manager era tutta la presentazione senza sostanza: c'erano molti colori, icone e grafici, ma non c'era assolutamente alcuna logica dietro di loro. Tutti i dati dovevano essere raccolti e manipolati manualmente. Nonostante la bella interfaccia, l'applicazione era essenzialmente inutile.

Sono felice di dire che il manager in questione era convinto che il mio approccio fosse quello che soddisfaceva le sue reali esigenze aziendali.

L'importanza della presentazione :

C'è spesso un'implicazione che le abilità in HTML, CSS ecc. Sono in qualche modo inferiori alle abilità nei linguaggi di programmazione "reali". Questo è un grave errore.

Nella mia storia, il senior manager ha ritenuto che il design fosse molto importante per lui, nella misura in cui inizialmente era pronto a trascurare la funzione a suo favore. Ora, se questo fosse un episodio isolato, potrei suggerire che il manager fosse solo sciocco. Ma non lo era. Di volta in volta, ho incontrato utenti che sono rimasti colpiti dalla grafica appariscente e dai widget frizzanti, ma non impressionato dalla funzionalità grezza e dai miei risultati tecnici. Penso che ci siano diverse lezioni da imparare qui:

  • Le persone valutano il software in base a criteri che comprendono. Capiscono spesso la differenza tra bello e brutto, ma raramente apprezzano le sfumature tecniche.
  • Le persone sono ingannate dalle apparenze. Questa potrebbe non essere una buona cosa, ma è una realtà con cui dobbiamo convivere.
  • Le apparenze influenzano il modo in cui le persone sentono il software. Il modo in cui le persone pensano del software è importante per loro. In effetti, le persone a volte preferiscono software che li faccia sentire bene rispetto a software funzionalmente superiore. In effetti, potrebbero essere più produttivi con strumenti di benessere che con strumenti tecnicamente superiori. In questa misura, i nostri utenti non vengono ingannati. Stanno davvero facendo una scelta saggia e ponderata.
  • Come programmatori, spesso trascuriamo il ruolo della presentazione mentre ci concentriamo sulla funzione. In una certa misura, questo è giusto e corretto. Tuttavia, è importante riconoscere che esiste un'altra dimensione nel nostro lavoro che è importante per i nostri clienti.

Pertanto, i linguaggi orientati alla presentazione (HTML, CSS) sono importanti. Il valore aggiunto di coloro che possono utilizzare questi strumenti in modo efficace non deve essere sottovalutato.

L'importanza dei linguaggi di programmazione reali

Come sottolineato dall'OP, i linguaggi di programmazione "reali" sono Turing Complete. Come un vero disadattato triste, trovo questo sublimemente affascinante. Significa che, per qualsiasi programma scritto in un linguaggio TC, un programma funzionalmente equivalente può essere scritto in qualsiasi altro linguaggio TC. Ovviamente, ciò non significa che tutte le lingue siano uguali. Ognuno di essi ha i suoi punti di forza e di debolezza che li rendono più o meno adatti a determinati compiti. Tuttavia, a parte l'I / O, ciò significa che tutti i programmi possono essere scritti in tutti i veri linguaggi di programmazione.

(Per inciso, la cosa importante è TC. Il dichiarativo contro l'imperativo è un'aringa rossa qui. SQL, ad esempio, è dichiarativo ma è anche un linguaggio di programmazione appropriato perché è TC.)

Naturalmente, lo stesso non vale per un linguaggio di markup come HTML o CSS. In effetti, ci sono intere classi di problemi che queste lingue semplicemente non possono risolvere . Dove posso programmare tutto ciò che voglio in un vero linguaggio di programmazione - inclusi i motori di layout - non è possibile ottenere le stesse cose con linguaggi che non sono TC.

Come evidenziato nella mia storia, HTML e i suoi simili sono usati per produrre presentazioni. Veri linguaggi di programmazione vengono utilizzati per produrre funzionalità.

Perché i programmatori sono pedanti per tutto ciò?

  1. I programmatori impiegano molto tempo, sforzi e denaro per sviluppare le proprie capacità. Le persone apprezzano naturalmente le cose in cui investono ("il tuo cuore è dove sono i tuoi soldi").
  2. I programmatori sentono spesso la necessità di giustificare la quantità di tempo necessaria per produrre risultati rispetto ai rapidi risultati raggiunti dai progettisti dell'interfaccia utente. Per fare ciò, devono fare una distinzione tra ciò che effettivamente fanno i due gruppi .
  3. Perché i datori di lavoro devono applicare le persone giuste ai lavori giusti. A meno che non chiariamo le differenze (spesso tecniche), i manager fanno facilmente le chiamate sbagliate.
  4. Perché c'è una differenza reale e fondamentale , come indicato sopra.

È sempre appropriato essere pedanti?

Ammettiamolo, come programmatori siamo un lotto naturalmente pedante . Va con il territorio. Non aiuta il fatto che molti di noi siano stati bruciati quando i non programmatori non hanno capito cosa facciamo.

Tuttavia (e ad essere sincero, questo va contro il mio istinto naturale), non penso che dobbiamo chiamare le persone ogni volta che scivolano su ogni piccola distinzione .

Le cose importanti qui sono il contesto e la prospettiva .

Mi è stato detto che, dal punto di vista di un biologo, un pomodoro è un frutto. Ma quando li compro al supermercato, li cerco tra le verdure. Perché? Perché la distinzione tecnica non ha importanza in quel particolare contesto. Inoltre, la distinzione avrebbe effettivamente ostacolato la loro utilità: se fossi stato abbastanza stupido da includere pomodori in una macedonia, per esempio.

È lo stesso con i linguaggi del computer. Ci sono momenti in cui la differenza tra linguaggi di programmazione e altri linguaggi conta davvero . Abbastanza spesso, tuttavia, possiamo tutti comunicare perfettamente in modo efficace quando li raggruppiamo tutti insieme. Nel caso della domanda collegata dall'OP, in realtà non importava quali lingue fossero veri e propri linguaggi di programmazione e quali no. Sottolineare la distinzione non ha fatto avanzare la discussione in alcun modo. Per fortuna, oltre ad aggiungere un po 'di rumore (e diventare lo stimolo per una discussione interessante!) La pedanteria collegata dall'OP era di scarsa importanza. Nel peggiore dei casi, tuttavia, la pedanteria può suscitare sentimenti negativi e danneggiare i rapporti ... almeno secondo mia moglie.
:-)

Come gestire la pedanteria tra i programmatori

Un mio predicatore amico una volta pronunciò un sermone intitolato:

è una collina che vale la pena morire per essere su?

Si riferiva a generali che fanno una valutazione strategica su quali battaglie vale la pena combattere: i guadagni valgono i costi?

  • Vale davvero la pena interrompere il flusso della discussione per fare questa distinzione?
  • La mia pedanteria deriva da un senso di arroganza o da ferite passate?
  • I miei commenti valorizzano le capacità degli altri e le mie?

Certo, ci sono momenti in cui è necessario fare delle distinzioni. Il mio obiettivo è che, quando darò un contributo, aggiungerà valore ai nostri sforzi collettivi.

Dopo tutto, questo è il lavoro di ogni vero programmatore.


4
Non pensavo che SQL fosse Turing completo, a meno che tu non stia parlando di T-SQL o PL / SQL.
FrustratedWithFormsDesigner,

@FrustratedWithFormsDesigner: Hai ragione! Grazie per avermi raccolto. (Comunque, il punto che sto
sollevando è

1
Risposte molto buone Come sviluppatore web ho visto più volte situazioni in cui i clienti sono rimasti molto più colpiti da un design "appariscente" che dalla funzionalità proposta. Sebbene ciò possa offendere il nostro istinto programmatore purista (che la funzionalità dovrebbe essere il re) è qualcosa che ignoriamo a nostro rischio e pericolo.
Dan Diplo,

4
+1: Joel Spolsky ha un post sul blog interessante che affronta il problema con la funzione vs GUI appariscente. Soprattutto i rischi di mostrare una GUI finita al 100% e molto appariscente quando la funzionalità non è attiva. Una buona lettura se non l'hai mai letto. joelonsoftware.com/articles/fog0000000356.html
Leo

3
"Potrebbero essere più produttivi con strumenti di benessere che con strumenti tecnicamente superiori" - Vero, vero, vero! Apple ha costruito la propria attività su questo. Non fraintendetemi, Mac ha sostanza troppo, ma ciò che ha reso alcune persone pagano quasi il doppio per una macchina Mac come Linux o Windows Uno è che sembra freddo e si sente buono da usare.
GlenPeterson,

116

Dì a un ingegnere civile o meccanico che hai studiato "Ingegneria del software" e ti diranno che "Ingegneria del software" non è vera ingegneria.

Di 'a un pilota dell'F-16 che fai volare Cessnas per divertimento e ti dirà che non sei un vero pilota.

Di 'a un dottore che sei un chiropratico e te lo dirà ... beh, non andiamo lì :-)

Penso che sia soprattutto che alle persone non piaccia l'idea che la loro professione venga infiltrata da pretendenti o persone che non sono veramente "degne".

Ora, per essere onesti, è abbastanza chiaro che HTML e CSS non sono linguaggi di programmazione . Non sono più linguaggi di programmazione che il formato .docx è un linguaggio di programmazione e affermare che sei un programmatore se tutto ciò che sai è HTML e CSS è sicuramente impreciso. Ma penso che parte della veemenza nella risposta possa essere attribuita a ciò che ho detto sopra.

Inoltre, nella domanda che hai collegato, l'interrogatore ha chiamato HTML e CSS un "linguaggio", non un "linguaggio di programmazione". L'HTML è un linguaggio di markup e anche il CSS è un linguaggio (non so quale "tipo" di linguaggio chiameresti CSS, però?), Quindi penso che sia stato un po 'ingiusto chiamarlo fuori per chiamarlo "lingue " ...


7
"Non so quale" tipo "di linguaggio chiameresti CSS, però?" - in un pizzico "linguaggio di descrizione dello stile" lo farebbe.
ottobre

28
@ acidzombie24: Cosa significa la "L" in "HTML"?
Dean Harding,

8
Se ha sintassi e semantica, è piuttosto difficile affermare che non è una lingua. HTML e CSS sono entrambe le lingue in base a questi criteri (come lo sono inglese, esperanto, klingon e probabilmente UML). Nessuno di loro è però un linguaggio di "programmazione".
Zach,

6
@Dean Harding - Hyper Text Markup Legos?
VirtuosiMedia,

4
CSS è un DSL (Domain Specific Language) per descrivere lo stile (ovvero il suo dominio è l'estetica visiva)
Paul

9

Non importa davvero tanto per me.

Ma presumo che per quelli per cui lo fa, la distinzione tra HTML, CSS, XML, ecc. E Real Programming Language ™ è un po 'come la distinzione tra legno e vernice come materiali da costruzione. Non puoi costruire cose con Paint come puoi fare con Wood, e allo stesso modo non puoi programmare con HTML come puoi fare con un RPL.

Ti concedo, tuttavia, per alcune conversazioni, fare una tale distinzione può essere irrilevante, e quindi pedante e fastidioso.


1
XML è un cattivo esempio perché è più generale di HTML / CSS - XSLT è sia XML che Turing-complete, per esempio. Penso che XML non sia tanto un linguaggio quanto una semplice sintassi: specifica come sono definiti i token ma non cosa significano.
Tikhon Jelvis,

@TikhonJelvis Penso che fondamentalmente stiamo dicendo la stessa cosa, ma mentre lo fai stai dimostrando il mio punto. Dividere i capelli sul fatto che XML (eXtensible Markup Language) sia un "linguaggio" o una "sintassi" è per lo più irrilevante al punto mentre stavo facendo, e quindi ...
Eric King,

6

Potrebbe non essere una distinzione "importante", dal momento che probabilmente tanto lavoro va nella parte html / css di alcuni siti Web come nella parte di programmazione.

Ma è una distinzione significativa, dal momento che chiunque non sappia cosa significhi non ha posto in un team che si occupa dello sviluppo web.

Se un designer ritiene che l'HTML stia programmando, lascia che continui a progettare con gli strumenti Adobe e faccia progetti relativi alla stampa; ma non credere a una cosa che potrebbe dire sulle app Web.

Se uno sviluppatore pensa di essere al di sopra dei designer perché "i suoi" linguaggi sono completi di Turing, non aspettarti che lavori bene con i designer, o che il suo codice possa essere "preimpostato" dopo averlo fatto.


@Javier: Qual è la tua definizione di "linguaggio di programmazione"?
Christoffer Hammarström,

@Christoffer Hammarström: se premuto per dare una definizione formale, andrei con Turing-completezza; ma informalmente dico solo che un programma fa le cose, in risposta ad alcuni input. Di solito, se non esiste un if ... thencostrutto di runtime e un modo per ripetere le cose un numero di volte sconosciuto in precedenza, sono propenso a dire che non è un linguaggio di programmazione. Certo, ci sono alcune lingue marginali che complicano la definizione; ma HTML / CSS sono tutt'altro .
Javier,

@Javier: Diresti che il canonico "Hello World" è un programma, dato che non richiede input?
Christoffer Hammarström,

@Javier: Secondo una discussione su Wikipedia ( en.wikipedia.org/wiki/… ), le prime versioni dei linguaggi Pixel Shader non erano complete di Turing (nessuna "capacità di iterazione generalizzata", cioè "un modo per ripetere le cose in precedenza- numero sconosciuto di volte "). Si trattava di linguaggi usati solo dai programmatori nella programmazione dell'unità di elaborazione grafica nei giochi popolari. Diresti ancora che non erano linguaggi di programmazione?
Christoffer Hammarström,

@Christoffer: Hello world richiede input: devi iniziare la sua esecuzione. La tua osservazione su Pixel Shader è intrigante, però.
Robert Harvey,

5

Lo hai colpito alla testa quando hai detto "dichiarativo, non imperativo". Il markup (sia esso HTML, CSS o altro) descrive le cose. Il punto centrale della programmazione è fare le cose.

Il set di abilità richiesto per usare il markup è completamente diverso dal set di abilità richiesto per programmare.

I tipi di problemi risolti scrivendo markup sono completamente diversi dai tipi di problemi risolti dalla programmazione.


16
Il linguaggio di programmazione funzionale puro è per sua natura dichiarativo. Così è Linq, la comprensione dell'elenco di Python, XAML, XSLT, SQL e Prolog. Tutti che sono linguaggi di programmazione e / o concetti in buona fede. Mentre la maggior parte dei linguaggi di programmazione sono indispensabili, questa non è la caratteristica determinante. Affatto.
Konrad Rudolph,

@KonradRudolph - Se pensi che i linguaggi di programmazione puramente funzionali siano in qualche modo dichiarativi, non devi capirli molto bene.
Jonathan Cast

@jcast È del tutto possibile che io fraintenda qualcosa. Ma poi anche gli esperti del settore, a quanto pare; Per un riferimento generale, Wikipedia classifica i linguaggi di programmazione (puramente) funzionali come dichiarativi. Come esempio specifico, anche un Paul Bone, che ha un dottorato di ricerca per lavori su linguaggi dichiarativi puri, segue questa definizione. Sarei curioso di sapere per quale motivo offendi la definizione.
Konrad Rudolph,

5

Per alcune persone è importante perché nessuno dei due è scienza missilistica in superficie, ma ci sono molti arcani che li circondano a causa del fatto che si implementano in modo diverso in tipicamente 5 a dozzine di ambienti diversi a cui tieni davvero. Quel tipo di imprevedibilità e attenzione all'artigianato spaventa una certa varietà di professionisti della tecnologia che è inorridita da rischi non quantificabili e ancor più inorridita imparando qualcosa di più di quello che devono assolutamente fare dopo essersi assicurati una laurea.

Se qualcuno mi chiedesse quali lingue conoscevo e avrei lanciato CSS lì fuori e avrebbero detto "ma non è un linguaggio REALE", gli chiederei come avrebbero gestito centrando verticalmente un div in IE 5, IE 6-8 e IE9 +. Quindi potremmo passare ad angoli arrotondati, problemi di trasparenza alfa, il vero colpevole dietro tutti questi ridicoli argomenti di tabelle come layout che solo ora stanno iniziando a diventare veramente irrilevanti e dozzine di argomenti in più per detto uber-coder che probabilmente ne conosce uno lingua e afferma uno o due in cui ha praticamente funzionato a causa delle lezioni che è stato costretto a frequentare al college 10 anni fa.

Sono sicuramente "lingue". Non li definirei "linguaggi di programmazione". Mi sentirei a mio agio nel descrivere il processo di scrittura in queste "codifiche" di queste lingue.

Per quanto mi riguarda, tuttavia, chiunque sia riuscito a gestire il grande maestro CSS ha la faccia tosta e l'etica del lavoro per diventare un eccellente programmatore, ha già un po 'di esperienza nel pensiero orientato agli oggetti e senza dubbio ha imparato a pensare a come scrive ora potrebbe avere un impatto sul suo lavoro 25 progetti per il futuro.


2
+1. Non so quante volte ho sentito un "programmatore" mettere HTML / CSS come una programmazione semplice e non reale. Quindi, quando non riescono a capire come mai il loro elenco puntato si allinea correttamente in Firefox, alzano le mani e dichiarano che l'intero Web non è adatto per il software moderno :(
Graham,

3

HTML e CSS non sono linguaggi di programmazione. Farsene una ragione.

Tuttavia: JavaScript è un linguaggio di programmazione. La macchina è il browser. PHP è un linguaggio di programmazione. La macchina è virtuale nel server.

Quindi, se stai usando solo HTML e CSS, non stai facendo alcuna programmazione (anche se potresti fare un po 'di ingegneria).

Ma se stai utilizzando JavaScript, PHP o un altro linguaggio di scripting. Stai programmando.

Per quanto riguarda i linguaggi di programmazione REAL. Se stai operando su una macchina (vera o virtuale). E stanno usando i TUOI algoritmi per dire alla macchina di fare le cose. Quindi stai usando un linguaggio di programmazione REALE.


6
Quindi immagino che possiamo rinunciare a HTML, CSS e SQL perché, dopo tutto, non sono comunque veri e propri linguaggi di programmazione. In effetti, potremmo anche rinunciare anche agli IDE, dal momento che qualsiasi programmatore degno di nota può accontentarsi di un editor della riga di comando.
Robert Harvey,

4
Non ho effettuato il downgrade della risposta personalmente (penso che -6 sia sufficiente!) Ma immagino che il motivo dei downvotes sia che in realtà non risponde alla domanda. La domanda non è "sono linguaggi di programmazione HTML e CSS?", La domanda è "perché è importante?"
Dean Harding,

6
@Robert Questo è completamente specioso. "X è inutile" non segue dall'argomento di Ricardo secondo cui "X non è una Y".
Matthew Leggi il

4
@Lennart Regebro @Robert Harvey: la posizione di @Matthew Read è il nocciolo della conversazione qui - stai equiparando un sentimento di superiorità con una negazione di una menzogna. HTML / CSS è eccezionalmente difficile, assumo persone che possono farlo per me dato che non sono abbastanza vicino, mi mancano le competenze. È un'abilità di progettazione tecnica, non è programmazione .
Orbling

3
Rendere la parola "programmazione" così ampia significa renderla quasi insignificante. Il significato è più ristretto di quello, e potresti benissimo avere un'opinione diversa, ma si scopre che il linguaggio significa ciò che la maggioranza lo usa per significare.
Matteo Leggi il

3

Il linguaggio di programmazione è un po 'un termine inesatto perché è un termine comune utilizzato anche dai professionisti e dai laici. I praticanti hanno un significato sfumato di quel termine in cui i laici di solito non lo fanno. Normalmente la loro definizione è se ha parole / sintassi divertenti che non capisco immediatamente e che i programmatori lo usano allora deve essere un linguaggio di programmazione. Non completamente fuori dal comune, ma possiamo concordare che è inesatto.

Parole come dichiarative, imperative e turing complete sono termini più precisi con significati molto specifici. Quando fai una domanda come perché HTML / CSS non è un linguaggio di programmazione, stai chiedendo una definizione più precisa di cosa sia realmente un linguaggio di programmazione. Non siamo pedanti, ma stiamo cercando di rispondere alla tua domanda. Sono i termini migliori da usare quando anche se li cerchi su Google è difficile capire cosa significano? Dipende. Volevi la risposta breve o lunga. :-)

I linguaggi di programmazione sono in genere pensati per essere completati dai programmatori, ma cosa significa? Significa che la lingua può descrivere il comportamento o come fare le cose. Lo chiamiamo formalmente logica. HTML / CSS può descrivere che c'è un pulsante situato nell'angolo in alto a destra, oppure c'è una tabella con 4 colonne 5 righe, le prime due righe sono gialle e la riga inferiore ha il testo verde e ogni cella nella tabella ha 5 pixel di spazio vuoto attorno al contenuto.

Ciò che HTML / CSS non può fare è esprimere il comportamento o la logica di ciò che accade quando si fa clic sul pulsante. Non posso dire quando faccio clic su quel pulsante per estrarre i valori da quella tabella e aggiungerli e scrivere quel valore in una nuova riga nella parte inferiore della tabella. Descrivere il comportamento è all'incirca equivalente a Turning-complete senza diventare eccessivamente pedante.

Più precisamente Turing-complete significa che potresti implementare la lingua in sé. Ciò significherebbe che potrei scrivere un programma javascript che accetta una stringa di javascript e potrebbe eseguirlo (e non usando la funzione eval ()). In effetti, posso scrivere un programma javascript che potrebbe prendere un programma scritto in qualsiasi linguaggio completo di Turing e valutarlo. Questo è ciò che significa essere Turing completo. Tutte le lingue che stanno completando sono equivalenti in quali programmi possono essere espressi. Rivelazione piuttosto sorprendente se ci pensate.


Turing completo significa che la lingua può essere utilizzata per simulare una macchina Turing (oppure può calcolare qualsiasi funzione calcolabile di Turing).
mipadi,

3
@pipadi - Ti darò una definizione molto corretta e precisa, ma qualcuno che fa domande come questa dirà "Beh, WTF è una macchina di Turing? WTF è una funzione calcolabile di Turing?" Se non capiscono Turing Complete, capiranno anche la funzione di Turing Machine o calcolabile da Turing? È come cercare la parola retorica nel dizionario e dice "di, relativi o relativi alla retorica". Questa definizione non ti dice cosa significhi effettivamente retorica e ti indica semplicemente un'altra parola che non capisci.
Chubbsondubs,

1

Ecco i miei due centesimi. HTML e CSS non sono chiaramente linguaggi di programmazione. Per questo motivo, quando vedo HTML o CSS sul curriculum di qualcuno in "Linguaggi di programmazione", ciò mi dice semplicemente che questa persona non sa di cosa sta parlando.

A parte questo, no, non importa davvero.

A proposito, i programmatori generalmente tendono ad essere pedanti. Questo viene semplicemente con il lavoro.


4
Quindi nella tua mente non c'è spazio per qualcuno che sia solo approssimativo al riguardo perché non vogliono sprecare spazio con un'altra sezione del linguaggio di marcatura? Per me è una pedanteria ben oltre ciò che è utile.
Jon Hopkins,

1
+1 quando vedo un CV con HTML / CSS in "programmazione", non leggo oltre. o non conosce la differenza (quindi non mi serve a niente), o spera di non conoscere la differenza (quindi non voglio lavorare con lui)
Javier

2
@Jon Hopkins: L'attenzione ai dettagli è una qualità necessaria in un programmatore. Mettere HTML nei linguaggi di programmazione non è approssimativo, è sciatto. È una brutta prima impressione se stai candidando un lavoro come programmatore.
Dima,

1
@Dima: assolutamente. l'informalità è ok, a volte anche per iscritto, l'imprecisione nei concetti di base del commercio è inaccettabile.
Javier,

1
Questo è ridicolo. I curriculum e le interviste sono una delle parti più problematiche del nostro settore in questo momento. Non si sa mai se qualcuno che conosce la differenza inserisce ancora "HTML" in "Linguaggi di programmazione" perché hanno paura che alcuni droni delle risorse umane non lo notino in "markup / design / etc" e danno il via al loro curriculum. Dovresti almeno chiamarli o portarli dentro. Se ti dicono in faccia che "programmano in HTML", beh ... è davvero una bandiera rossa. Ma ripensaci, pensa a cosa puoi realizzare ora solo in HTML 5! È davvero un tale tratto?
Graham,

0

Non importa Ed è anche una questione di definizione. Che cos'è un linguaggio di programmazione? Alcuni indicano che deve essere Turing completo. Altri hanno altre definizioni, che rendono HTML un linguaggio di programmazione. (E nel tuo esempio, non erano nemmeno chiamati linguaggi di programmazione, solo lingue, che ovviamente sono).

Il mio consiglio: cerca di ignorare le persone che indicano questo tipo di affermazioni inutili e in molti sensi persino errate. È solo una variazione della grammatica nazista. Chiamare HTML un linguaggio di programmazione non è errato in alcun senso significativo.


7
-1 È significativo poiché l'HTML non è un linguaggio di programmazione, non ha gli elementi di base di una cosa del genere - descrive semplicemente il layout di una pagina, per la stessa estensione un libro sul disegno tecnico è un linguaggio di programmazione.
Orbling

1
@Orbling: sono linguaggi di programmazione dichiarativa specifici del dominio in base alle definizioni più comuni di ciò che ciò significa. Vedi ad esempio: en.wikipedia.org/wiki/… Quindi, scusa, non ci riesci. Secondo definizioni perfettamente comuni e sensate, sono linguaggi di programmazione. E secondo definizioni completamente diverse, ma ugualmente sensate e comuni, non sono linguaggi di programmazione. Entrambe le viste sono corrette. Ma quelli che colpiscono la loro opinione sulla testa degli altri sono insicuri e devono sentirsi superiori ai ragazzi HTML.
Lennart Regebro,

8
La parola "programma" ha un significato definito generalmente concordato. Non puoi creare un programma con HTML, quindi fare qualcosa con HTML non è "programmazione". Chiunque sostenga diversamente sostiene che le stesse parole che usano nella loro argomentazione possono cambiare arbitrariamente il loro significato, e in tal caso assegnerei arbitrariamente le loro parole per non significare nulla.
Matteo Leggi il

4
@Orbling: "Lavoro con ragazzi HTML" il nuovo "uno dei miei amici è {inserire qui un gruppo di minoranza}"?
Anon.

2
@Lennart Regebro, ogni definizione standard di un linguaggio di programmazione (anche su Wikipeida) afferma che un linguaggio di programmazione può descrivere un algoritmo. Come puoi descrivere un algoritmo in HTML e CSS?
Charles E. Grant,

0

Penso che ciò dipenda da questo: HTML e CSS, sebbene abbastanza complicati da richiedere un po 'di buon senso, sono i linguaggi di presentazione, più adatti come formato per i report generati. Pertanto, le persone che possono fare solo queste cose non sono considerate programmatori. Tenendo presente che alcuni programmatori sono stati nell'informatica abbastanza a lungo da ricordare quando l'elaboratore di testi medio ha preso più sintassi dei comandi per lo stile del testo rispetto all'HTML.

Ciò che alcuni chiamerebbero un linguaggio "reale" è quello che elaborerebbe i dati in qualche modo per generare un rapporto. O qualcosa che potrebbe essere usato per scrivere un gioco. Conoscere HTML e CSS dentro e fuori è un'abilità preziosa, ma lo è molto di più, quindi si combina con la conoscenza di JS per il front-end e Java, PHP, Perl, Ruby, Python, C / C ++ o C # nel back-end.

Al contrario, qualcuno che conosce solo una di quelle lingue "reali" senza alcuna tecnologia di front-end Web, limita moltissimo la propria flessibilità come programmatore.


Vorrei suggerire un linguaggio che è completamente eseguito e gestito da un computer. Ho eseguito il debug del codice C e il debug degli stili CSS. Posso dire con una certa certezza che il secondo può richiedere più tempo (se non più lungo) del primo (a seconda di quale cosa orribile una persona ha fatto con un puntatore contro quale parte oscura delle specifiche che stai cercando di far funzionare e * & ^ % $ @ browser sembra sbagliato). L'HTML da solo non dice molto, ma accoppiato alla piena espressione dei CSS può essere molto interessante.
Danny Staple,

2
Non c'è niente di peggio che avere a che fare con CSS e markup da parte degli sviluppatori che ci hanno pensato pensando che sarebbe stato un gioco da ragazzi.
Erik Reppen,

0

Lo stereotipo logico "cervello sinistro" o creativo "cervello destro" descrive accuratamente le competenze di molte persone. Nella mia esperienza, "HTML / CSS è un linguaggio di programmazione" riguarda più se le persone che sono brave in HTML / CSS possono anche essere brave in altre attività di programmazione.

La maggior parte dei web designer con cui ho lavorato negli ultimi 13 anni che ho sviluppato web sono stati in grado di creare HTML e CSS funzionanti, ma non sono in grado di gestire sfide di programmazione più impegnative (niente più che il più semplice cut-and- JavaScript incollato). La maggior parte dei programmatori hot-shot e dei progettisti di database non si preoccupano abbastanza della presentazione visiva per fare un buon lavoro con HTML / CSS o la presentazione in generale. La maggior parte in realtà si rifiuta di provare.

HTML e CSS richiedono alcune capacità di programmazione: sperimentazione, risoluzione dei problemi, test accurati, comprensione dell'ereditarietà ... Ma richiedono almeno un uguale numero di abilità progettuali: sensibilità al colore, linea, spaziatura, equilibrio - quasi tutte tipi di abilità di composizione visiva che rendono una buona fotografia.

Poiché HTML / CSS è un linguaggio di layout o di presentazione, è alla fine del diagramma del flusso di dati. Nessun altro codice si trova a valle di esso. Le competenze di progettazione di livello superiore di cui qualcuno ha bisogno per progettare una buona API, servizio o schema di database non sono utilizzate in HTML e CSS. Generalmente non è necessario modulare qualsiasi cosa sia correlata a HTML o CSS o, in tal caso, non spetta al progettista farlo. È raro che qualsiasi funzionalità sia realizzata con HTML / CSS . I menu a discesa sono probabilmente l'eccezione più comune, ma possono essere creati tagliando e incollando una ricetta dal Web anziché progettando il codice.

È insolito, ma non impossibile per un programmatore avere alcune capacità di progettazione visiva o di layout o per un progettista avere alcune abilità di programmazione. Queste persone sono particolarmente utili in un team Web perché aiutano a colmare un divario che la maggior parte di noi ha. Ma sono spesso soggetti a stereotipi, che essere in grado di fare HTML / CSS è impossibile per un "vero programmatore" o viceversa. Ma questa combinazione di abilità non è più impossibile che per quello stesso programmatore essere un marinaio, un pittore, un cuoco decente o avere qualche altra abilità che praticano nel loro tempo libero.

Come altri hanno già detto, questa distinzione si concentra maggiormente durante l'assunzione. Poiché le persone con talenti crossover sono rare, la maggior parte delle offerte di lavoro deve essere mirata a un set di abilità o all'altro. Se un programmatore elenca HTML / CSS in "Linguaggi di programmazione", genera una bandiera rossa che non è in grado di svolgere attività di programmazione generali o che forse la loro definizione di programmazione è molto limitata. Forse possono, solleva solo una domanda. Se un designer elenca HTML / CSS, vuoi sicuramente guardare il loro portfolio per vedere che hanno la capacità artistica di creare l'effetto visivo desiderato.

L'HTML / CSS può essere ripetutamente cestinato come non essere un vero linguaggio di programmazione perché è più sicuro e socialmente più accettabile rispetto al cestinare le persone che non riescono a superare la divisione dell'emisfero che rappresentano. Certo, alcune persone potrebbero non avere questa inibizione. In realtà ho lavorato con un manager che spesso diceva: "Ha scritto [inserire la funzionalità backbone del dipartimento qui]? Pensavo avesse appena fatto HTML?"

Ottima domanda!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.