Sözdizimini unutan programcılar


17

Kod yazarken iyi programcıların dillerinin ucunda sözdizimi olması gerekir mi? Çevrimiçi basit şeyler için Google'a başvururlarsa ne yapıyorsunuz? İyi mi kötü mü (belki nereye bakacaklarını biliyorlar)? Programcıların iyi bir hafızası olmalı mı? Bu iyi bir programcı için bir özellik mi?


1
Nasıl "basit" bağlı. Bazı örnekler / arka planlar yararlı olabilir. Ayrıca, programladıkları dil / ortamla ilgili tutarsızlık sorunu da olabilir.
rwong

1
Hızlı \ verimli altına düştüğü için bunun iyi bir programcı tanımının bir parçası olacağını düşünürdüm. Eğer bir danışma referansı ile bir kod satırı yazamazsanız, zamanında hiçbir şey yapamayacaksınız. Öte yandan, bu şeyleri ezberlemek için bir çağrı değildir.
stonemetal

C ++, genellikle çok sık değil gibi işaretçi-işlevler (üye ya da değil) sözdizimi aramak zorunda ... belki bazen sözdizimi sadece garip ?
Matthieu M.

Yanıtlar:


25

Programlama felsefem bunun bir "zihin durumu" ve geri kalanı "sadece sözdizimi" dir. (yani önemli değil)

Bununla birlikte, basit şeyleri aramak zorunda olmamalıdır. En azından düzenli olarak çalıştığınız diller için değil. Yenileyicilere ihtiyaç duymanın ve bilgiyi nasıl bulacağınızı bilmenin yanlış bir yanı kesinlikle sahip olmak iyi bir beceridir. Ancak, çekirdek sözdizimi kesinlikle iyi bilinmelidir. Aksi takdirde, arama yapmak için çok fazla zaman ve programlama için çok az zaman harcarsınız.


8
Tam olarak, konuşulan bir dil gibi: nasıl konuşacağınızı bilmelisiniz, ancak sözlükler çok yardımcıdır. Genellikle, kelime bilgisine sahip olmadan önce ne ifade etmek istediğinizi biliyorsunuz!
Kevin Cantu

@Kevin - Kesinlikle - ancak birisinin akıcılığını bu tür referansları ne sıklıkta yapacaklarına göre değerlendirebilirsiniz. Birçoğumuz onları zaman zaman kullanırız, ancak bir dili konuşabileceğini söyleyen ancak sürekli bir sözlüğe başvurma ihtiyacı hisseden birini sorgulardınız.
Jon Hopkins

@jon Kesinlikle. Sözlü / yazılı dil metaforuna devam ederek, biraz çaba göstererek dile maruz kalmamızı artırabilir ve kelime dağarcığımızı geliştirebiliriz. Bu yüzden okuma ve benim iyi bir iPhone flash kart uygulaması için sürekli arama benim iştah açıcı. Programlama dilleri için benzer şekilde, belirli bir deyimle ilgili sorun yaşadığımda, bunu gösteren bir snippet oluşturuyorum ve kolay başvuru için elinizin altında tutuyorum. Ve elbette, zaman zaman bu sorunlu alanlara tekrar bakmaya çalışıyorum. Biraz zaman aldı, ama sonunda sinir bozucu anahtar ifadesini bu şekilde ezberledim.
George Marian

Bence daha 'gelişmiş' bir geliştirici muhtemelen kendi kuşağının altında birden fazla dile sahip olacak ve bazen onları karıştıracak. Hala zaman zaman C # ve C ++ arasında çok boyutlu bir dizi bildirimi karıştırıyorum ("arr [] [] veya arr [,]") ve bakmak zorunda.
Steven Evers

28

Ne demek istediğine bağlı, ama kısa cevap evet.

Programcılar burada ve orada bir noktalı virgül veya bir ayracı unutacak mı? Elbette. Muhtemelen nadiren kullandıkları için bir switch ifadesinin sözdizimini arayacaklar mı? Peki yaparım. ActionScript ile çalışacak mıyım, bunun yerine Java gibi mi yazacağım? Kesinlikle. Yeni bir dilde yazmaya alışmak biraz zaman alabilir, özellikle de yıllarca farklı bir dille çalışıyorsanız.

Asıl endişe, bir programcının sözdiziminin başlarını veya kuyruklarını, bir IDE'nin onlara yardım etmesine rağmen yapamaması olmalıdır. Kişi bir noktalı virgülün ne için olduğunu veya süslü kıvırcık parantezlerin ne olduğunu bilmiyorsa, daha fazla çalışma yapmaları gerekir.


8
Heh, switch ifadesinin tam sözdizimi genellikle bana da keder verir.
George Marian

Bu, Ruby'yi tercih ettiğimde bile Python komut dosyasına yapışmamın nedeni. İş yerinde Python'da kod yazmam gerekiyor ve ileri geri kafa karıştırıcı olurdu.
LennyProgrammers

Switch deyimi sözdizimi için +1 - bazı nedenlerden ötürü anlaşılması zor
billy.bob

5
Birinin bildiği sayısız dil ve zaman zaman sözdiziminin birlikte karışabileceğinden bahsetmiyoruz.
Josaph

@dave Bence sorun sembollerin karışımı. Genellikle switchparantez içinde bir şey, daha sonra bir açılış ayracı, daha sonra parantez içinde olmayancase bir etiket , daha sonra iki nokta üst üste ve ardından genellikle noktalı virgülle sonlandırılan ifadeler gelir. Ve ifadeleri de unutmayalım . Sonunda ezberlediğim çaba ve irade gücüyle oldu ve hala ara sıra iki kez kontrol etmem gerekiyor; sadece emin olmak için. break
George Marian

10

Aksi takdirde iyi bir programcının akıcı bir dilin sözdizimini rutin olarak araması gerektiğinde kesinlikle şaşırırdım. Tabii ki pratikte çok fazla kullanılmayan köşe vakaları olabilir. iyi bir programcının onları tanımaması için, ancak genel bir kural olarak, akıcı bir programcı sözdizimi aramak zorunda değildir. Fonksiyonları ve dersleri kütüphanelerden aramak zorundadır :)


+1. Kendimi C ++ 'da akıcı bir şekilde düşünürdüm ve her gün fonksiyon isimlerini ve argümanlarını ararım . std::stringÖrneğin, her üyesini asla ezberlemeyeceğim .
Michael Kristofik

8

Dilleri düzenli olarak değiştirdiğiniz veya aynı anda 3 veya 4 dilde çalıştığınız bir konumdaysanız, bu konuda yapabileceğiniz çok şey yoktur. Bir süre, sürekli anahtarlama gerektiren projeler üzerinde çalıştım ve kendimi bir "referans programcısı" olarak adlandırmaya başladım.


4
+1 Tamamen katılıyorum. Düğüm hızında diller arasında atlayan kodlayıcılar (birçok projeyi kapsayan bir günde 10 dilde veya daha fazla dilime sahip olabilirim), özellikle standart kütüphane işlevlerinde benzer diller arasındaki belirsiz farkları hatırlamakta zorluk çekiyor. Yaşlandıkça daha da kötüleştiğini fark ettim.
Orbling

Bu benim sorunum, işte o kadar çok şeyden geçiyoruz ki bazen temelleri bile hatırlayamıyorum. Özellikle genellikle bağlamı kullanabildiğim için, birisi yakınlarda bir for döngüsü veya işlevi yazdı, ben sadece bu sözdizimini kopyalarım. Son zamanlarda kendimi sözdizimi öğrenmeye zorladım, sadece ezberlemem için uygulamaya güvenmek yeterli değil. Sözdizimini beynime öğütmek için bir dil (Javascript) seçtim. Özellikle beyaz tahta röportaj pratiğinde çok yardımcı oluyor.
Jemmeh

5

15 yılı aşkın bir süredir C ++ yazıyorum, ancak bazı gizli sözdizimsel köşelerini ezbere bilmiyorum.
Bir işlev şablonunu yeniden nasıl açıkça başlatırsınız? Şablon şablonu bağımsız değişkeni olan bir şablonu kısmen özelleştirmek için sözdizimi nedir? Ve beni işaretçiler dizileri götüren işlevler için bir işaretçi dizisine bir işaretçi döndüren bir işlevi bildirmeye başlamak etmeyin ...

Bu dünyada tüm C ++ sözdizimini gerçekten bilen en fazla bir veya iki düzine insan olduğundan şüpheleniyorum . Ve bunların hepsi muhtemelen C ++ derleyici ön uçları yazarak para kazanıyor.


4

Burada "sözdizimi" ile ilgili Google'ı merak ediyorum.

Şüphem (ve korkum), bir çağrının hangi parametreleri aldığından bahsetmiyoruz (çünkü çoğu IDE sizi orada yönlendirecek, böylece onları Google'a vermeyeceksiniz) ama gerçek "X nasıl yapılır" türü şeyler.

IDE'ler, kesin isimleri ve parametre listelerini eskisi gibi gerekli şekilde ezberlemeyi gereksiz kıldı ve bu birçok insanı biraz tembelleştirdi, ancak bu iyi.

Ancak Google'a ihtiyacınız olan bir şey mi var? Bana göre bu genellikle sözdizimi değildir, ya gerçekten bilmediğiniz ya da sadece aşina olduğunuz bir şeydir.

Tabii ki bu, Google şeylerine sahip olmanın yanlış olduğu anlamına gelmiyor - diller bugünlerde oldukça geniş olabilir ve birkaç kişi her şeyi biliyor, ancak bir dil konusunda yetkin olduğunu iddia ederseniz Google'ın kuraldan ziyade istisna olması gerektiğini söyleyebilirim .

Benim için nispeten alışılmadık bir şey yapmadıkça veya belki de farklı bir şey yaptıktan sonra dil ile paslı değilseniz, bir dili "bildiğinizi" iddia ediyorsanız,% 10'dan fazla Googling yapmamalısınız ve bu gerçekten çok özel şeyler olmalı.

Bunun iyi bir hafızaya sahip olmak olduğu fikrine istinaden, gerçekte değil. Gerçekten (yüzeysel olarak değil) bildiğiniz bir şey için aldığınız içgüdüsel bir his hakkında. Bir tarif olmadan bir Melanzane Parmigiana nasıl pişireceğimi bildiğim gerçeğini düşünmüyorum, iyi bir anıya sahip olduğumun bir işareti, o yemeği nasıl pişireceğimi anladığım bir işaret - onlar çok farklı şeyler.

Ayrıca, kendinize bunu sorun, bir restoran mutfağına girip sürekli bir yemek kitabına bakarak şefi bulmayı bekler misiniz? Veya arabanızda çalışan tamircinin bu modelin Hayes kılavuzunda dolaştığını mı görmek istiyorsunuz? Bunlardan birini görürsem o kişinin ne kadar iyi olduğu konusunda oldukça tedirgin olurdum.


Aşağı oy için yorum mu yapıyorsunuz? Anlaşmazlığın ne olduğuyla gerçekten ilgileniyorum.
Jon Hopkins

+1 - İyi seslenmesyntax != api
Jeremy Heiler

3

Benim görüşüm hayır. Bu önemli bir sözdizimi değil ama bir problemi çözme ya da bir hedefe ulaşma mantığınız Birden fazla dilde çalışmayı düşünürseniz, doğal olarak, sözdizimini tam olarak hatırlamıyorsunuz.


0

Sözdizimi, dilin altında yatan semantiğin tepesindeki görünümdür çünkü programlama, bir şey oluşturmak için temeldeki semantik tuğlaları kullanmakla ilgilidir. Dilin kullandığı temel kavramları anlamadıysanız, sözdizimini ezberlemede ne kadar iyi olduğunuz önemli değildir, kodunuz korkunç bir karışıklık olacaktır. Birinin dediği gibi, "İyi programcıların kafasında bir tercüman ve derleyici vardır." Sözdiziminden nasıl bahsedilmediğine dikkat edin, çünkü gerçek işin gerçekleştiği yer bu değildir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.