it-swarm.dev

HTML ve CSS'nin programlama dilleri olmaması neden önemlidir?

Burada örnek:

Web uygulamaları oluşturmakla ilgileniyorsam hangi dilleri bilmeliyim?

Evet, HTML ve CSS'nin Turing tamamlanmadığını anlıyorum. Evet, zorunlu diller değil, beyan edici olduklarını anlıyorum. Peki insanlar neden bu diller hakkında bir soru sorduklarında bu bilgiçlikle (ve tartışmasız bariz bir şekilde) her zaman kafasına takılırlar?

160
Robert Harvey

Fark nedir, gerçekten?

Bir programlama dili ile bu diğer diller arasındaki gerçek ve önemli fark şudur:

HTML ve CSS sunu açıklarken programlama dilleri işlev

Bu farkın neden önemli olduğunu göstermek istiyorum, ancak bu konudaki bilgiçlik bazen yanlış yerleştiriliyor.

Gerçek bir hikaye:

Bir keresinde "uygun" bir programlama dili kullanarak karmaşık bir performans yönetim sistemi geliştirmek için birkaç ay geçirdim. Diğer çeşitli sistemlerden veri toplama işlemini otomatikleştirdi, bu veriler üzerinde çeşitli manipülasyonlar gerçekleştirdi ve ardından sonuçları basit bir tabloda sundu.

Bir kez yayınlandığında, üst düzey bir yönetici benzer bir iş için yazılmış bir araç gördü ve alternatiflerini kullanarak yazdıklarımı değiştirip değiştiremeyeceğimizi sordu. Ayrıca, bu yeni uygulamanın birkaç gün içinde yazıldığı çözümümü geliştirmek için haftalar geçirdiğim için üzgündü.

Daha fazla araştırma, yöneticinin tercih ettiği seçeneğin hiçbir madde içermeyen tüm sunum olduğunu ortaya koydu: çok sayıda renk, simge ve grafik vardı, ancak kesinlikle mantık yok arkalarında. Tüm veriler manuel olarak toplanmalı ve değiştirilmelidir. Güzel arayüzüne rağmen, uygulama aslında işe yaramazdı.

Söz konusu yöneticinin, yaklaşımımın gerçek iş ihtiyaçlarını karşılayan yaklaşım olduğuna ikna olduğunu söylemekten mutluluk duyuyorum.

Sunumun önemi:

HTML, CSS vb. Becerilerin "gerçek" programlama dillerindeki becerilerden bir şekilde daha düşük olduğuna dair bir ima vardır. Bu ciddi bir hatadır.

Hikayemde, üst düzey yönetici, başlangıçta işlevi kendi lehine gözden kaçırmaya hazır olduğu ölçüde, tasarımın onun için çok önemli olduğunu hissetti. Şimdi, bu izole bir olay olsaydı, yöneticinin sadece aptal olduğunu önerebilirim. Ama değildi. Tekrar tekrar, gösterişli grafikler ve vızıltı widget'lardan etkilenen, ancak ham işlevsellik ve teknik başarılarımdan etkilenmeyen kullanıcılarla tanıştım. Burada öğrenilecek birkaç ders olduğunu düşünüyorum:

  • İnsanlar yazılımı anladıkları kriterlere göre değerlendirir. Genellikle iyi görünümlü ve çirkin arasındaki farkı anlarlar, ancak teknik nüansları nadiren takdir ederler.
  • İnsanlar görünüşe aldanıyorlar. Bu iyi bir şey olmayabilir, ama birlikte yaşamamız gereken bir gerçek.
  • Görünüşler insanların yazılım hakkındaki düşüncelerini etkiler. İnsanların yazılım hakkında ne hissettikleri onlar için önemlidir. Aslında, insanlar bazen onları hissetmek işlevsel olarak üstün yazılımlara karşı iyi yapan yazılımları tercih ederler. Gerçekten de, kendilerini iyi hissettiren araçlarla teknik olarak üstün araçlardan daha verimli olabilirler. Bu kapsamda kullanıcılarımız kandırılmıyor. Aslında akıllı ve düşünceli bir seçim yapıyorlar.
  • Programcılar olarak, işleve odaklandığımızda sunumun rolünü sıklıkla ihmal ederiz. Bir dereceye kadar, bu doğru ve doğrudur. Ancak, çalışmalarımızda müşterilerimiz için önemli olan başka bir boyutun olduğunun farkında olmak önemlidir.

Dolayısıyla, sunuma yönelik diller (HTML, CSS) önemlidir. Bu araçları etkin bir şekilde kullanabilenlerin kattığı değer göz ardı edilmemelidir.

Gerçek programlama dillerinin önemi

OP'nin işaret ettiği gibi, "gerçek" programlama dilleri Turing Complete'dir. Uygun bir üzgün inek olarak, bu süblimasyonel olarak büyüleyici buluyorum. Bu, bir T-C dilinde yazılmış herhangi bir program için, işlevsel olarak eşdeğer bir program herhangi bir başka T-C dilinde yazılabileceği anlamına gelir. Tabii ki, bu tüm dillerin aynı olduğu anlamına gelmez. Her birinin, onları belirli görevler için az çok uygun hale getiren güçlü ve zayıf yanları vardır. Ancak, G/Ç bir yana, bu tüm programların tüm gerçek programlama dillerinde yazılabileceği anlamına gelir.

(Bu arada, önemli olan T-C'dir. Açıklayıcı ve zorunluluk burada kırmızı bir ringa balığıdır. Örneğin SQL açıklayıcıdır, ancak aynı zamanda uygun bir programlama dilidir, çünkü T-C'dir.)

Elbette, HTML veya CSS gibi bir biçimlendirme dili için de aynı şey geçerli değildir. Aslında, bu dillerin çözemediği tüm sorun sınıfları vardır. Nerede istediğim her şey gerçek bir programlama dilinde - düzen motorları dahil - T-C olmayan dillerle aynı şeyleri elde etmek mümkün değil.

Hikayemde vurgulandığı gibi, HTML ve ilk sunum üretmek için kullanılır. Gerçek programlama dilleri işlevsellik üretmek için kullanılır.

Programcılar neden bu konuda bilgiçlik gösteriyor?

  1. Programcılar becerilerini geliştirmek için çok fazla zaman, çaba ve para harcarlar. İnsanlar doğal olarak yatırım yaptıkları şeylere değer veriyorlar ("kalbiniz paranızın olduğu yer").
  2. Programcılar genellikle UI tasarımcılarının hızlı sonuçlarına kıyasla sonuç üretmek için gereken süreyi haklı çıkarma ihtiyacı duyarlar. Bunu yapmak için, iki grubun aslında do arasındaki bir ayrım yapmaları gerekir.
  3. Çünkü işverenlerin doğru insanları doğru işlere uygulaması gerekiyor. (Genellikle teknik) farkları netleştirmedikçe, yöneticiler kolayca yanlış çağrı yaparlar.
  4. Çünkü yukarıda açıklandığı gibi gerçek ve temel fark var.

Bilgiçlik göstermek her zaman uygun mu?

Programcılar olarak bununla yüzleşelim biz doğal olarak bilgiç bir partiyiz. Bu bölge ile gider. Programcı olmayanlar ne yaptığımızı anlayamadıklarında çoğumuzun yakılmasına yardımcı olmaz.

Bununla birlikte (ve dürüst olmak gerekirse, bu benim doğal içgüdülerime aykırıdır), İnsanları her küçük ayrımı aştıklarında çağırmamız gerektiğini düşünmüyorum.

Buradaki önemli şeyler bağlam ve perspektif.

Bana bir biyolog açısından domatesin bir meyve olduğu söylendi. Ama onları süpermarkette satın aldığımda, sebzelerin arasından onları arıyorum. Neden? Çünkü bu bağlamda teknik ayrım önemli değil. Dahası, ayrım aslında yoluna girecek yararlılıkları: Örneğin, bir meyve salatası içine domates dahil edecek kadar daft olsaydım.

Bilgisayar dilleri için de aynı şey geçerli. Programlama dilleri ile diğer diller arasındaki farkın olduğu zamanlar vardır gerçekten önemli. Bununla birlikte, çoğu zaman, hepsini bir araya getirdiklerinde mükemmel bir şekilde etkili bir şekilde iletişim kurabiliriz. OP ile bağlantılı soru söz konusu olduğunda, gerçekten önemli değildi hangi diller gerçek programlama dilleriydi ve hangileri değildi. Ayrımı belirtmek tartışmayı hiçbir şekilde ilerletmedi. Neyse ki, OP tarafından bağlanan bilgiçlik biraz gürültü eklemek (ve ilginç bir tartışma için uyarıcı olmak!) Bununla birlikte, en kötüsü, bilgiçlik olumsuz duyguları körükleyebilir ve ilişkilere zarar verebilir ... en azından eşime göre.
:-)

Programcılar arasında bilgiçlikle nasıl başa çıkılır

Bir vaiz arkadaşım bir zamanlar şu vaazı verdi:

burası ölmeye değer bir tepe mi?

Hangi savaşların savaşmaya değer olduğu konusunda stratejik bir değerlendirme yapan generallere atıfta bulunuyordu: kazançlar maliyetlere değer mi?

  • Bu ayrımı yapmak için tartışma akışını kesmeye gerçekten değer mi?
  • Bilgiçliğim kibir duygusundan mı yoksa geçmişten gelen acılardan mı kaynaklanıyor?
  • Yorumlarım başkalarının becerileri kadar benim de değerime sahip mi?

Elbette, ayrım yapılması gereken zamanlar vardır. Amacım, bir katkıda bulunduğumda kolektif çabalarımıza değer katacak.

Sonuçta, her gerçek programcının işi.

300
Kramii

Bir İnşaat veya Makine Mühendisine "Yazılım Mühendisliği" okuduğunuzu söyleyin ve size "Yazılım Mühendisliği" nin gerçek mühendislik olmadığını söyleyeceklerdir.

Bir F-16 pilotuna eğlence için Cessnas'ı uçtuğunuzu söyleyin ve size gerçek bir pilot olmadığınızı söyleyecektir.

Bir doktora bir masör olduğunuzu söyleyin ve size söyleyecektir ... iyi, oraya gitmeyelim :-)

Bence çoğunlukla insanlar mesleğinin fikirleri veya gerçekten "layık" olmayan insanlar tarafından sızmış olması fikrinden hoşlanmazlar.

Adil olmak gerekirse, HTML ve CSS'nin programlama dilleri olmadığı oldukça açıktır. Artık .docx biçiminin bir programlama dili olduğunu ve bildiğiniz tek şey HTML ve CSS'nin kesinlikle yanlış olduğunu düşünüyorsanız bir programcı olduğunuzu iddia etmek değildir. Ama cevaptaki bazı araçların, yukarıda söylediğim şeyle ilişkilendirilebileceğini düşünüyorum.

Ayrıca, bağladığınız soruda, HTML ve CSS sorgusu "programlama dili" değil, "dil" olarak adlandırılmıştır. HTML bir biçimlendirme dilidir ve CSS de bir dildir (CSS olarak adlandırdığınız dilin ne tür bir dil olduğunu bilmiyorum?) " ...

117
Dean Harding

Benim için çok önemli değil.

Ancak, HTML, CSS, XML vb. Ve Gerçek Programlama Dilleri ™ arasındaki ayrımın, yapı malzemeleri olarak ahşap ve Boya arasındaki ayrım gibi olduğunu varsayıyorum. Paint ile ahşap gibi yapabileceğiniz gibi build şeyler ve benzer şekilde bir RPL ile yapabileceğiniz gibi HTML ile program yapamazsınız.

Yine de, size bazı konuşmalar için böyle bir ayrım yapmak ilgisiz ve dolayısıyla bilgiçlikçi ve sinir bozucu olabilir.

9
Eric King

Programlama bölümünde olduğu gibi bazı web sitelerinin html/css kısmında tartışmalı olarak çok fazla çalışma olduğu için bu "önemli" bir ayrım olmayabilir.

Ama bu is önemli bir ayrımdır, çünkü bunun ne anlama geldiğini bilmeyen herkesin web geliştirme yapan bir takımda yeri yoktur.

Bir tasarımcı HTML'nin programladığına inanıyorsa, Adobe araçlarıyla tasarım yapmaya devam etmesine ve baskı ile ilgili tasarımlar yapmasına izin verin; ancak web uygulamaları hakkında söyleyebileceği bir şeye inanmayın.

Bir geliştirici, tasarımcıların üzerinde olduğunu düşünürse, 'dilleri Turing-complete'dur, onun tasarımcıyla iyi çalışmasını beklemeyin ya da kodunun bittikten sonra' önyargılı 'olabileceğini düşünmeyin.

6
Javier

Bazı insanlar için önemlidir çünkü ikisi de yüzeyde roket bilimi değildir, ancak aslında önem verdiğiniz tipik olarak 5 ila düzinelerce farklı ortamda farklı şekilde uygulandıkları için onları çevreleyen çok sayıda arcana vardır. Bu tür öngörülemezlik ve zanata gösterilen dikkat, ölçülemez risklerden dehşete düşmüş ve daha sonra bir derece güvence altına aldıktan sonra kesinlikle daha fazla şey öğrenerek dehşete düşmüş belirli bir teknoloji uzmanını korkutuyor.

Biri bana hangi dilleri bildiğimi sorduysa ve CSS'yi oraya attım ve "ama bu GERÇEK bir dil değil" dediler. IE 5, IE8 6-8 ve IE9 + Daha sonra yuvarlatılmış köşelere, alfa saydamlık sorunlarına, sadece şu an gerçekten alakasız olmaya başlayan tüm bu saçma tablolar düzenindeki argümanların arkasındaki GERÇEK suçluya geçebiliriz ve Muhtemelen bir dili bilen ve 10 yıl önce üniversitede almaya zorlandığı dersler nedeniyle işlevsel olarak okuryazar olmadığını bir ya da iki iddia eden uber-kodlayıcı.

Onlar kesinlikle 'diller'. Onlara 'programlama dilleri' demem. Bu dilde 'kodlama' yazma sürecini tanımlamakta rahatım.

Bununla birlikte, büyük usta CSS yapmayı başaran herkes, mükemmel bir programcı olmak için chutzpa ve çalışma etiğine sahip, zaten nesne odaklı düşünmede biraz arka plana sahip ve şüphesiz ne olduğunu düşünmeyi öğrendi şimdi 25 çalışmasını geleceğe yazdırabilir.

5
Erik Reppen

"Zorunlu değil, deklaratif" dediğinde kafasına vurdun. İşaretleme (HTML, CSS veya başka bir şey olsun) şeyleri açıklar. Programlamanın asıl amacı do şeydir.

İşaretlemeyi kullanmak için gereken beceri seti, programlamak için gerekli beceri setinden tamamen farklıdır.

İşaretleme yazarak çözülen sorun türleri, programlama ile çözülen sorunlardan tamamen farklıdır.

5
HedgeMage

Programlama dili biraz yanlış bir terimdir, çünkü uygulayıcılar ve meslekten olmayan kişiler tarafından da kullanılan yaygın bir terimdir. Uygulayıcıların meslekten olmayan kişilerin genellikle yapmadığı bu terimin nüanslı bir anlamı vardır. Normalde tanımları, anlayamadığım komik kelimeler/sözdizimi varsa ve programcılar bunu kullanıyorsa, o zaman bu bir programlama dili olmalıdır. Tamamen iz dışında değil, ama bunun kesin olmadığını kabul edebiliriz.

Deklaratif, zorunlu ve tamamlama gibi kelimeler çok özel anlamlarla daha kesin terimlerdir. Neden bir programlama dili değil HTML/CSS gibi bir soru sorduğunuzda, bir programlama dilinin gerçekte ne olduğunu daha net bir şekilde tanımlayabilirsiniz. Bilgiçlik yapmıyoruz, ama sorunuzu cevaplamaya çalışıyoruz. Onları google bile bile ne anlama geldiğini anlamak zor kullanmak için en iyi terimler mi? Bağlı olmak. Kısa ya da uzun cevap mı istediniz? :-)

Programlama dillerinin genellikle programcılar tarafından Tornalama tamamlandığı düşünülür, ancak bu ne anlama geliyor? Bu, dilin davranışı veya bir şeylerin nasıl yapılacağını açıklayabileceği anlamına gelir. Buna resmen mantık diyoruz. HTML/CSS, sağ üst köşede bir düğme olduğunu veya 4 sütunlu 5 satır içeren bir tablo olduğunu, ilk iki satırın sarı olduğunu ve alt satırın yeşil metnin olduğunu ve tablodaki her hücrenin 5 piksel olduğunu açıklayabilir. içerik etrafında boşluk.

HTML/CSS'nin yapamayacağı şey, düğmeyi tıkladığınızda ne olacağının davranışını veya mantığını ifade etmektir. Bu düğmeyi tıklattığımda değerleri o tablonun dışına alıp eklediğimde bu değeri tablonun altındaki yeni bir satıra yazamıyorum. Açıklayıcı davranış, aşırı bilgiçlik kazanmadan kabaca tam Tornalama ile eşdeğerdir.

Daha doğrusu Turing-complete, dili kendi başına uygulayabileceğiniz anlamına gelir. Bu, bir javascript dizesi alan bir javascript programı yazabileceğim ve onu yürütebileceği (ve eval () işlevini kullanarak değil) anlamına gelir. Aslında, herhangi bir Turing tam dilinde yazılmış bir programı alıp değerlendirebilecek bir javascript programı yazabilirim. Turing'i tamamlamanın anlamı budur. Tamamlanan tüm diller, hangi programların ifade edilebileceğine eşdeğerdir. Eğer düşünürseniz oldukça şaşırtıcı vahiy.

3
chubbsondubs

HTML ve CSS programlama dilleri değildir. AŞ bunu.

Ancak: JavaScript bir programlama dilidir. Makine tarayıcıdır. PHP bir programlama dilidir. Makine sunucudaki sanal bir dildir.

Dolayısıyla, yalnızca HTML ve CSS kullanarak yapıyorsanız, herhangi bir programlama yapmıyorsunuz (ancak bazı mühendislik işlemleri yapıyor olabilirsiniz).

Ancak JavaScript, PHP veya başka bir komut dosyası dili kullanıyorsanız. Programlama yapıyorsunuz.

GERÇEK programlama dilleri gelince. Bir makinede (gerçek veya sanal) çalışıyorsanız. Makinenize bir şeyler yapmasını söylemek için KENDİ algoritmalarınızı kullanıyorsunuz. O zaman GERÇEK bir programlama dili kullanıyorsunuz.

3
Ricardo Santos

İşte benim iki sentim. HTML ve CSS açıkça programlama dilleri değildir. Bu nedenle, "Programlama Dilleri" altında birisinin özgeçmişinde HTML veya CSS gördüğümde, bu bana bu kişinin neden bahsettiğini bilmediğini söyler.

Bunun dışında, hayır, gerçekten önemli değil.

Bu arada, programcılar genellikle bilgiçlik eğilimi gösterirler. Bu iş ile birlikte geliyor.

1
Dima

Bence bu geliyor - HTML ve CSS, biraz bilgili gerektirecek kadar karmaşık olsa da, oluşturulan raporlar için en uygun sunum dilleri. Bu nedenle, sadece bunları yapabilen insanlar kodlayıcı olarak kabul edilmez. Bazı kodlayıcıların ortalama bir kelime işlemcinin metni biçemlemek için HTML'den daha fazla komut sözdizimi aldığı zaman hatırlamak için yeterince uzun süredir hesaplama yaptığını unutmayın.

Bazılarının 'gerçek' dil olarak adlandırdığı şey, bir rapor oluşturmak için verileri bir şekilde işleyecek dildir. Ya da oyun yazmak için kullanılabilecek bir şey. İçeride ve dışarıda HTML ve CSS bilmek değerli bir beceridir, ancak ön uç için JS bilgisi ve arka uçta Java, PHP, Perl, Ruby, Python, C/C++ veya C # ile birleştirilir.

Tersine, herhangi bir web ön uç teknolojisi olmadan sadece bu 'gerçek' dillerden birini bilen biri, bir kodlayıcı olarak kendi esnekliklerini çok sınırlar.

0
Danny Staple

Önemli değil. Ve aynı zamanda bir tanım meselesi. Programlama dili nedir? Bazıları bunun Turing-complete olması gerektiği anlamına gelir. Diğerleri HTML'yi bir programlama dili yapan başka tanımlara sahiptir. (Ve örneğinizde, programlama dilleri olarak bile adlandırılmamışlardı, sadece belli oldukları diller).

Benim tavsiyem: Bu tür anlamsız ve birçok anlamda yanlış iddialara işaret eden insanları görmezden gelmeye çalışın. Bu sadece dilbilgisi nazi-ism'in bir çeşididir. HTML'ye bir programlama dili demek anlamlı değildir.

0
Lennart Regebro

Mantıksal "sol beyin" veya yaratıcı "sağ beyin" güvercin deliği/stereotip, birçok insanın beceri setlerini doğru bir şekilde tanımlar. Deneyimlerime göre, "HTML/CSS bir programlama dili mi?" HTML/CSS'de iyi olan kişilerin diğer programlama görevlerinde de iyi olup olamayacağı konusunda daha fazla.

Web geliştirme yaptığım son 13 yılda çalıştığım web tasarımcılarının çoğu, çalışan HTML ve CSS oluşturabildi, ancak daha zorlu programlama zorluklarını (en basit kesme ve yapıştırılan JavaScript). Sıcak çekim programcılarının ve veritabanı tasarımcılarının çoğu, HTML/CSS veya genel olarak sunum ile iyi bir iş yapmak için görsel sunumu yeterince önemsemiyor. Çoğu aslında denemeyi reddediyor.

HTML ve CSS bazı programlama becerileri gerektirir: deney, problem çözme, dikkatli test, kalıtım anlayışı ... Ama en azından eşit sayıda gerektirir becerileri: renk, çizgi, aralık, denge duyarlılığı - çoğu iyi bir fotoğraf yapmak görsel kompozisyon becerileri aynı tür.

HTML/CSS bir düzen veya sunum dili olduğundan, veri akışı diyagramının sonundadır. Aşağıdakilere başka hiçbir kod yerleştirilmez. İyi bir API, hizmet veya veritabanı şeması tasarlamak için birisinin ihtiyaç duyduğu daha büyük düzey tasarım becerileri HTML ve CSS'de kullanılmaz. Genellikle HTML veya CSS ile ilgili herhangi bir şeyi modüle etmeye gerek yoktur veya varsa grafik tasarımcı bunu yapmakla kalmaz. Herhangi bir işlevsellik HTML/CSS ile yapılır nadirdir. Açılır menüler muhtemelen en yaygın istisnadır, ancak kod tasarlamak yerine web'den bir tarif kesip yapıştırarak yapılabilirler.

Bir programcının bazı görsel tasarım veya düzen becerilerine sahip olması veya bir tasarımcının bazı programlama becerilerine sahip olması olağandışıdır, ancak imkansız değildir. Bu insanlar bir web ekibinde özellikle değerlidir, çünkü çoğumuzun sahip olduğu bir boşluğu kapatmaya yardımcı olurlar. Ancak genellikle stereotiplere tabidirler, HTML/CSS yapabilmek "gerçek bir programcı" için imkansızdır veya tam tersi de geçerlidir. Ancak bu beceri kombinasyonu, aynı programcının iyi bir denizci, Ressam, yemek pişirmek veya boş zamanlarında uyguladıkları başka bir beceriye sahip olmaktan daha imkansız değildir.

Diğer insanların söylediği gibi, bu ayrım en çok işe alım sırasında odaklanır. Çapraz yeteneklere sahip insanlar nadir olduğundan, iş ilanlarının çoğu bir beceri setini veya diğerini hedeflemek zorundadır. Bir programcı "Programlama Dilleri" altında HTML/CSS listelerse, genel programlama görevlerini yerine getiremedikleri veya programlama tanımlarının çok dar olduğu kırmızı bir bayrak oluşturur. Belki yapabilirler, sadece bir soru ortaya çıkarır. Bir tasarımcı HTML/CSS listeliyorsa, istenen görsel efekti yaratma yeteneğine sahip olduklarını görmek için kesinlikle portföylerine bakmak istersiniz.

HTML/CSS, gerçek programlama dilleri olarak tekrar tekrar çöpe atılabilir, çünkü temsil ettikleri yarımküre bölünmesini geçemeyen insanları çöpe atmaktan daha güvenli ve daha sosyal olarak kabul edilebilir. Tabii ki, bazı insanlar bu inhibisyona sahip olmayabilir. Aslında sık sık "Bu bölüm [omurga işlevselliği ekle] yazdı?" Diye yazdı bir yönetici ile çalıştı? Ben sadece HTML yaptığını düşündüm? "

Harika bir soru!

0
GlenPeterson