Programcıların iyi bir belleğe ihtiyacı var mı? [kapalı]


16

Programlanabilmesi için her türlü sözdizimini hatırlamak zorunda gibi görünüyor. İsimleri hatırlamak için iyi bir hafızanız yoksa, programlamayı öğrenmek daha zor olur mu?


20
İsimler için iyi bir hafızaya sahip olmak için bir isim vardı, ama ne olduğunu unuttum.
Mike Two

3
Sözdizimi bir sorunsa, en az sözdizimine sahip bir dil seçin. Lisp / Clojure?
Chiron

1
Bugünlerde bütün gün programlama yapmıyorum ama her gün programlama için biraz zaman harcıyorum . Birbirine benzemeyen bir grup dilde program yapıyorum. C, Java, Javascript, Lisp, VBA, PL / SQL, Ruby, Python, Perl, Smalltalk ve hatta zaman zaman küçük bir Prolog programlıyorum. Ben sadece sözdizimine bakıyorum.
Mike Sherrill 'Cat Recall'

4
Eğer yaparlarsa, yaklaşık 13 yıldır taklit ediyorum.
ElGringoGrande

1
Üniversiteler kesinlikle iyi bir hafızaya ihtiyacınız olduğunu öğretiyor, ki bu tamamen aptalca. Maden, CS final sınavlarının en az% 50 (her zaman kapalı kitap) değerinde olması ve ara sınavların genellikle en az% 30-40 olmasını gerektirdiği için özellikle kötü şöhretlidir.
Rei Miyasaka

Yanıtlar:


34

Bir dilin sözdizimi, günlük olarak kullanırsanız hatırlamayı düşündüğünüz kadar zor değildir. Sonunda çok kolay olur. Tüm çeşitli kütüphane işlevlerini hatırlamak çok daha zor olabilir ve çoğu insanın kullandıkları en yaygın olanlardan daha fazlasını hatırlayabileceğini düşünmüyorum, ancak Web'e, bir kitaba veya başka bir şeye erişiminiz varsa sorun değil. " "sizin için diğer tüm ayrıntıları hatırlar.


+1. Gerçekten ikinci doğa oldu. Kodlara tekrar bakıyorum ve takip ettiğim biçimlendirme kurallarından herhangi birini yaptığımı bile hatırlamıyorum ...
Reid

1
O'Reilly'nin cep rehberleri her şeyi takip etmeme yardımcı oluyor. Son derece kullanışlı.
Dünya Mühendisi

17

Doğal bir dili konuşmayı programlayabilmek için her türlü sözdizimini hatırlamak zorunda gibi görünüyor .

İsimleri hatırlamak için iyi bir hafızanız yoksa , konuşmayı programlamayı öğrenmek daha mı zor olacak ?

İnsanların dilleri olan "doğal" bir tesisleri olduğu doğru değil, değil mi?

Sadece dil edinmek için düşük seviyeli sinirsel donanıma sahip olduğumuz doğru olamaz, değil mi?

Programlama, doğal dillerin birçok kuralına uyan yapay dilleri kullanır.

Doğal diller programlama dillerinden biraz daha fazla esnekliğe sahiptir.

hala katı dilbilgisi. kurallar çok var ama

Konuşabiliyorsanız, konuşmayı öğrendiğinizde ezberlediğinizden başka bir şey ezberlemeden programlamayı öğrenebilirsiniz.


13

Evet:

Kısa süreli hafızadan bahsediyorsanız, evet . bir programcı problemleri programlarken / çözerken aynı anda birden fazla bilgi parçasını dengeleyebilmelidir.

Hayır:

Uzun süreli hafıza hakkında konuşuyorsanız, o zaman gerçekten değil . Bilginin hatırlanmasında önemli ölçüde yardımcı olabilecek birçok el kitabı ve referans + araç vardır. Kesinlikle bu uzun vadeli bilgileri ezberlemek daha hızlı bir geliştirici (genel) yapacak, ancak bu bir önkoşul değildir.


1
+1 Kısa ve uzun süreli belleğin soruya göre yararlılığı arasında yararlı bir karşılaştırma yapmak için. Birinin bunu yapmasını görmek için bekliyordum.
KChaloux

8

İyi bir bellek kesinlikle şarttır, ancak bariz nedenlerden dolayı değil.

Belirli algoritmalar, kütüphaneler, değişken isimleri ve benzerleriyle ilgili ayrıntıları hatırlamak çok kullanışlı olur, ancak süper önemli değildir. Yukarıdakilerin hepsine yardımcı olacak Google, DuckDuckGo, man sayfaları, dile özgü belgeler ve akıllı editörleriniz var. Bu koltuk değneklerine güvenmeniz gerekmiyorsa yardımcı olur, ancak zaman zaman onlara ihtiyacınız varsa iyi olur.

Belleğin önemli olduğu yerler üzerinde çalıştığınız şeyin ayrıntılarını aktif, kısa süreli bellekte tutmaktır. Tasarım, veri akışı, algoritmalar, veri yapıları ve hepsinin ürününüz ne olursa olsun nasıl etkileşimde bulunduğunu görselleştirebilmek OK programcısını mükemmel programcıdan ayırır. Aktif olarak yaparken, tek tekerlekli sirk bisikletine binerken devasa sayıda topla başarılı bir şekilde hokkabazlık yaptığınızı hissediyorsunuz.

Buna genellikle bölgede olmak denir . Kesintiler, aptalca sorular, TPS'ye ihtiyaç duyan patronlar sizi bu bölgeden sarsar.

Hafızanız ne kadar iyi olursa, bölgeye girmek o kadar kolay, orada kalmak o kadar kolay ve bir kesinti sonrasında tekrar içeri girmek o kadar kolay.

Bu tür bir bellekle ilgili sorunlarınız varsa, belleğiniz ne kadar kolay olursa, bir programcı olarak daha fazla başarı elde edeceğiniz için meditasyon tekniklerini ve bellek hilelerini öğrenmenizi öneririm.


1
Aslında, programı daha iyi modüle edip işleri doğru adlandırırsanız bellek gereksinimlerinin azaldığını söyleyebilirim. 20 değişkenli iki sayfalık bir yönteminiz varsa, alt görevleri yapmak için diğer iyi adlandırılmış yöntemlere çağrılarla 5 satırlı bir yönteminiz olduğundan çok daha fazla hatırlamanız gerekir. Ayrıca karmaşık bir şeyi her değiştirmek istediğinizde, bunu yapmak için "bölgeye" girmeniz gerekir. Oysa daha basitse, sadece değişikliğinizi yapabilirsiniz. "Bölge" nin bir yükümlülük olduğunu söyleyebilirim.
Cervo

1
@Cervo - Evet, ayrı modülleri ve küçük kod birimlerini kodlarken, yukarıda açıkladığım şey gerçekten gerekli değildir. Ancak tüm bir sistemde hata ayıklarken ve sorunun hangi güzel, temiz ve temiz modülde bulunduğunu bulmaya çalışırken, mümkün olduğunca çok durumu akılda tutmaya yardımcı olur.
unpythonic

Neden dünyada bunun tek bir oyu var? Kodunuzu çevresindeki öğelere nasıl uyduğunu hatırlamadan düzgün bir şekilde tasarlayamazsınız. Modern programlamanın birçoğu, bunun gerektirdiği ayrıntı miktarını azaltmakla ilgilidir, ancak bu, işinizi yapmak için hatırlamanız gerektiği gerçeğini değil, hatırlamanız gereken miktarı azaltır.
Loren Pechtel

5

Akışa karşı gideceğim ve evet diyeceğim . İyi bir hafıza, bir programcı olarak harika bir varlıktır. Hafızam her zaman bir programlama yükümlülüğü olarak gördüm, bu yüzden handikapımı telafi etmek için bazı hileler aldım:

  • Bu değişkenin (daha önce 3 satır kullandığınız) nasıl yazıldığını hatırlayabilmelisiniz. Eğer yapamıyorsanız IntelliSense kullanmayı öğrenmek (veya ne olursa olsun otomatik tamamlama Düzenleyicinizde veya IDE ise sizin formu).

  • Bu proje üzerinde en son ne zaman çalıştığınızı hızlı bir şekilde hatırlayabilmelisiniz. Bu günler önce olmuş, öğle yemeğinden hemen önce olmuş olabilir. Yapamıyorsanız, bir şeyler yazmayı öğrenin . Bir not defterini yanınızda tutun ve üzerinde çalıştığınız (veya yaptığınız) şeyleri, TODO öğelerini ve üzerinde çalışmakta olduğunuz kodun nasıl bir araya geldiğini hatırlamanız gereken şeyleri yazın.

  • Hata ayıklama ve KG zor. İdeal olarak, bir hata oluşturmaya veya bir şeyi hata ayıklamaya çalışırken attığınız adımlar hakkında çok ayrıntılı bir not defteri tutmalısınız. Bu yapmam gerektiğini bildiğim, ama yine de mücadele ettiğim bir şey.

Bu yardımcı olur umarım!


4

Gerilla Mülakat Rehberi (sürüm 3.0) , notların akıllı ve işlerin yapılmasının programlamanın önemli noktaları olduğu ortak bir referanstır. Smart, bazı hafıza becerileri içerir, ancak düşündüğünüz kadar değil.

Intellisense , sözdizimi söz konusu olduğunda, işlerin bu tarafında biraz yardım istiyorsanız çok yardımcı olabilir. Öğrendiklerinizi hızlı bir şekilde anlamlı bir şekilde uygulayabilmeniz için nasıl öğrendiğinizi bilmek, trivia sorularına cevap vermekten daha önemlidir.


2

İsimleri hatırlamanın, kelimeleri hatırlamaktan farklı süreçleri hatırlamaktan oldukça farklı bir bilişsel işlev olduğuna inanıyorum. Başka şekilde mükemmel bir şekilde işlev görebildikçe isimleri hatırlama yeteneğini tamamen ortadan kaldıran beyin yaralanmaları olan insanlar olmuştur.

Bu yüzden, programlama dillerini öğrenmekle ilgisi olmayan isimleri hatırlama yeteneğinin olduğunu söyleyebilirim.

Bununla birlikte, mantıksal kalıpları, kuralları ve kelimeleri hatırlamak faydalı olacaktır.


2
Haklı olduğuna eminim. Myers-Briggs Tip Göstergesi (özellikle programcı olmaya uygun olan) INTP'lerin insanların adlarını hatırlamakta zorlandıklarını söylüyor. Benim durumumda bunu doğru biliyorum. Evcil hayvanlarınızın adlarını, arabanızın plakasını ve geçen yıl 0x0D0A0D olarak garip yeni satırları olan bana verdiğiniz bir yığın izinin çıktısını hatırladığım yeri hatırlıyorum. Yine de kendi ismin 10 dakika unuturum. (Gençken, futbol takımımdaki tüm insanların isimlerini almam üç yıl sürdü.)
Mike Sherrill 'Cat Recall'

2

Hayır. Araçların bellek derinliği (Intellisense, Google, derleyiciler, kod üreteçleri) insan hafızasına kıyasla sonsuzdur. Bu yüzden iyi belleğe sahip programcı, kafasında bir delik bulunandan daha iyi değildir.

Programcıların gerçekte ihtiyaç duydukları şey, soyutlama seviyeleri arasında geçiş yaptıkları zaman "en yüksek odaklanma hızıdır". Ne kadar hızlı olursanız, bir programcı olarak o kadar iyi olursunuz. Bazıları 500 ms gibi bir kalp atışı hızına sahiptir, ilk kan dalgasının beyne gelişi odaklanır. Bazılarının sigara içme döngüsüne yuvarlanan odak saati, yaklaşık 2 saattir. Bazı sabah duş, yani yaklaşık 24 saat gerekir. İyi ve kötü programcı arasındaki fark bir zamanlar 1:80 kat önce ilan edildi ve aradaki fark sadece artıyor.


1

Hayır, istediğiniz şeyi elde etmek için Google'ın nasıl çalıştığını anlamanız yeterlidir

Korkunç bir hafızam var, ancak Google'ım becerilerim harika ^ _ ^

Tüm ciddiyetle, sözdizimini nerede bulacağınızı bildiğiniz sürece, hatırlamanıza gerek yoktur. Intellisense, yardım dosyaları, referans kılavuzları, internet vb.


1

Her şeyden önce, programlamayı öğrenmek herkes için zordur. İyi bir belleğe sahip olmak eminim. Ancak, özveri ve yaşam boyu öğrenme sevgisi daha değerlidir. Sözdizimini öğrenmek her şey gibidir, tekrar.

Programlama becerisi hakkında büyülü veya insanüstü bir şey yoktur. Sadece 10.000 saat harcayın ... ve diğer beceriler gibi bir usta olacaksınız. Tabii ki, bu 10.000 saatlik bir eğitim, körü körüne ve zihin uykusuzca geçmiş hataları tekrarlamıyor.


1

Bu gönderiyi uygun söz dizimi ile İngilizce olarak yazdınız. Açıkça bir dili nasıl kullanabileceğinizi hatırlayabilirsiniz. Sadece yeni bir dil öğrenmeniz ve her zaman doğru anlayabilmeniz için yeterince sık kullanmanız gerekir. İnsan odaklı dillerin aksine, bilgisayar programlama dilleri yanlış sözdizimi kullandığınızda size her zaman bilgi verecektir, bu yüzden aslında daha kolaydır. :-)


1

Ortalama bir programcının görevlerini yerine getirebileceğini bildikleri çok çeşitli şeyler olduğunu kabul ediyorum, sadece basit bir web sitesi oluşturmak için kontrol etmeniz gereken tüm kelimeleri, sözdizimlerini, teknikleri düşünün (ön uç: html, css, javascript (bazı Js çerçevelerini jquery olarak da sayabilirsiniz), ajax, arka uçta: Php veya ASP veya ASP.Net ve veri tabanlarını, mySql veya SqlServer veya Oracle veya MongoDB, vb. unutmayın). Dillerin, paradigmaların, sintaksilerin, kalıpların vb. Büyük bir listesi var, bunların her birini hatırlamak imkansız.

İyi bir programcı yapan şeyin pratik olduğunu, algoritmalarla dilden daha fazla pratik yaptığını ve sonunda en sık kullandığınız şeyleri hatırlayacağınızı, geri kalanı için her zaman google = P olduğunu düşünüyor.


1

Harika bir bellek her iki yolu da kesebilir.

Kafanızda düzinelerce bilgi parçasını bir kerede oynatabilirseniz, proje için kritik olan ancak herkesin korktuğu kadar karmaşık olan eski miras kodunu anlamak (ve umarım yeniden yazmak) için çok daha kolay bir zamanınız olacaktır. dokunun.

Öte yandan, proje için kritik olan ancak herkesin dokunmaktan korktuğu korkunç kod parçası, muhtemelen düzinelerce bilgi parçasını dengelemek için harika bir yeteneğe sahip biri tarafından yazılmıştır. Harika bir hafızanız varsa, sadeliğin zarafeti için bir takdir geliştirmek için ekstra çalışın.

Bir programlama dilinin sözdizimini öğrenmek büyük bir hafıza gerektirmez. Diğerlerinin söylediği gibi, sözdizimi o kadar çok güçlendirilir ki, hızla ikinci doğa olur. Yolun hangi tarafında sürmeniz gerektiğini hiç unuttunuz mu? Hangi aritmetik semboller toplama ve çıkarma temsil eder? Değilse, seçtiğiniz dilin sözdiziminin en yaygın kısımlarında çok fazla sorun yaşamadan ustalaşacaksınız ve ortaya çıktıklarında daha az yaygın olan bitlere bakabilirsiniz.

Bazı kütüphanelerin yüzlerce veya binlerce işlevi, sınıfı ve / veya yöntemi vardır. Tüm bu işlevleri kullanmayı öğrenmek imkansız bir görev gibi yabancıya benziyor. Ancak neredeyse her zaman kütüphanenin altında yatan bir yapı vardır. Tüm bu işlevleri hatırlamak yerine akıllı bir programcı kütüphanenin nasıl düzenlendiğini ve neler yapabileceğini anlamaya çalışır. Bu yapıldığında, ihtiyacınız olan işlevi ihtiyacınız olduğunda bulmak genellikle oldukça kolaydır.

Kısacası, bellek anlamaktan çok daha az önemlidir.


0

Değişir. Java ve .NET içinde standart kütüphaneler bir tür hiyerarşidir ve iyi belgelenmiştir. Bu nedenle, ağ iletişimi ile uğraştığınızı biliyorsanız, C #'daki system.net'e gidersiniz ve oradan ihtiyacınız olan belirli nesnelere / çağrılara inebilirsiniz. Bu açıdan, detayları ve orada ezberlemenize gerek yok.

Kendi programınızda, her şey bir şeyleri nasıl organize ettiğiniz / adlandırdığınızla ilgilidir. Basic of Basic'ten $, b $, c $ ... veya g $ gibi isimler kullanıyorsanız iyi şanslar. şeyleri FirstName, LastName gibi düşündüğünüz şekilde adlandırırsanız, çok daha kolaydır. Birçok dilde yardımcı olan adlandırma standartları vardır. Örneğin Java'da setX kuralı, bir sınıfın belirli niteliklerini almak / ayarlamak için getX ve büyük harf kullanım kuralları vardır. Yani bir kişinin ilk adı olduğunu biliyorsanız, muhtemelen firstName olarak adlandırılır ve alıcı / ayarlayıcı muhtemelen getFirstName ve setFirstName'dir ... Yani bu sözleşmeler çok yardımcı olur ...

Ayrıca daha kısa yöntemler / işlevler, aynı anda kafanızda daha az kalmanıza yardımcı olur. Ve uygun isimler kullanmak, bakmanıza gerek kalmanıza yardımcı olur. Örneğin, yaptıkları şeylere bir ad verirseniz, getMaximumValue çağıran bir yordamı okurken muhtemelen ne yaptığını anlamak için getMaximumValue 'yu okumanız gerekmez ... Ama işlevler / yöntemler daha uzun ve iç içe geçtikçe daha iyi bir bellek kesinlikle yardımcı olur.


JB King'in bahsettiği zekayı bıraktım, ancak C # için gerçekten de yardımcı oluyor. Java için editörleri kullanma eğiliminde değilim :( Bununla birlikte, geri kalanı hala geçerlidir, daha kısa yöntemler tutarsanız, adlandırma kurallarına sadık kalırsanız, intellisense daha iyi çalışır. Bir yöntemde 50 değişkeniniz varsa intellisense hala bırakabilir Biraz bunalmışsın
Cervo

Cervo Öncelikle bir C # geliştiricisiyim ama son zamanlarda Java'da daha fazla şey yapıyorum. IntelliJ Idea'yı deneyin. En son sürümleri oldukça iyi bir anlayışa sahip. Visual Studio iyi değil ama yakın.
Adrian

0

Hafıza o kadar da önemli değil. Bu konuda endişeleriniz varsa, sabahları cüzdanımı veya anahtarlarımı düzenli olarak evimde unuturum. Herkesi en az bir kez yanlış isimle çağırıyorum (ailem ve kız arkadaşım dahil). Her zaman evin etrafında bir şeyler yapmayı unutuyorum.

Günün sonunda programlama ilkeleri hala “bisiklet sürmeyi asla unutma” gibi kafanızda olacak. Özel ayrıntılar ve uygulama ayrıntıları o kadar önemli değildir. Bunları her zaman Google'a ekleyebilirsiniz.


0

Gönderen Joel On Software bir programmer- üretkenliği hakkında

Verimlilik, kısa süreli bellekte birçok küçük detayı aynı anda dengelemeye bağlıdır .

Bu nedenle, kısa süreli bellek , kritik bir görev verilen bir programcı için çok önemlidir.
Fakat uzun vadeli hafızanın o kadar önemli olduğunu düşünmüyorum .


0

Hızlı bir okumadan, kimsenin bir program yazmanın tek bir görevinden ziyade, genel programlama anlamında bellek hakkında konuştuğunu görmedim.

Bellek iki şey için yararlıdır:

  1. Temel anlambilimi / kütüphaneleri hatırlamak:

    Bu, tekrar ve Google tarafından kolayca desteklenir. IOW, bu problemin üstesinden gelememek için doğduğunuz bellek miktarının gülünç derecede düşük olması gerekir.

  2. Büyük programlardaki bağlamı hatırlamak:

    İşte hile burada. Programlar büyüdükçe (ve yaşlandıkça) verdiğiniz kararlar, sistem hakkındaki bilginizin miktarı ve proje tartışmalarında, hata ayıklamada herhangi bir faydası varsa, milisaniye içinde onu alabilme yeteneğinizle tamamen ilgilidir. Push acil durum söz konusu olduğunda, hiçbir miktarda belge / wiki girişi size yardımcı olmayacaktır - ekibinizin "sihirbazı" tek seçeneğiniz olacaktır. Baş mühendislerin bu kadar değer vermesinin / ödemesinin nedenlerinden biri de budur. Birçoğu tüm zamanlarını aslında bu noktada kodlama yaparak harcamaz, tam resmi güncel tutmak ve herhangi bir sorun / iyileştirme için uygulamak için daha fazla zaman harcarlar. İyi olanlar sadece bir ton CR ve burada bir kodlama değişikliği yaparak / yeni revizyonları prototipleyerek iletişim halinde kalırlar.

IOW, Yalnız # 1 ile makul bir programcı olabilirsiniz, ancak bir sonraki Linus olacaksanız, en azından çözdüğünüz sorunu kapsayacak kadar çok belleğe sahip olsanız iyi olur.

Gözlemlerimden, çalışma belleğinin kişinin değeri ile neredeyse doğru orantılı olduğunu bile söyleyebilirim.

Özetlemek için küçük bir sorumluluk reddi: Eidetic belleğiniz varsa, ancak bu mantığı uygularken sıfır / düşük entelektüel gücünüz varsa, bir projeye kameradan daha iyi olmayacaksınız.


0

Karşılaştığınız kişilerin adlarını hatırlamakta zorluk çekiyorsanız, yine de harika bir programcı olabilirsiniz.

İnsanların adlarını her zaman unutuyorum. Neredeyse on yıllık deneyime sahip kıdemli bir programcıyım. Benim durumumda, korkunç işitsel hafızam harika bir görsel hafıza tarafından telafi ediliyor.

Yine de, iyi bir programcı için temel gereksinim soyutlama yeteneğidir. Ne kadar çok veya ne kadar az hatırlayabileceğiniz önemli değil, bir değişken kavramını anlayamıyorsanız ve bir programda nasıl kullanacağınız iyi bir programcı olmayacaksınız.

Benim önerim, programlamada kısa bir ders denemeniz veya Python öğreticisini nasıl sevdiğinizi görmek için tamamlamanızdır.

Bu, programlamanın takip etmek isteyebileceğiniz bir kariyer olup olmadığı hakkında iyi bir fikir vermelidir.


-1

Ben empatik bir EVET diyorum!

Şu anda JAVA & C # öğreniyorum. Tüm testler kapalı kitap, bu yüzden JAVA için tüm% 100 tüm sınavları kodlama bellek kodlama.

Dahası, gittikçe zorlaşıyor. Şu anda anımsatıcılar gibi bellek numaralarını kullanmaya başlamam gereken noktadayım.

Yüksek IQ, iyi genel bilgi, iyi kelime bilgisi, polimatizm, yüksek matematik bilgisi, dokunarak yazma ve iyi bellek, bir programcının tüm varlıkları olduğunu söyleyebilirim.

Tipe dokunamayan veya daha yüksek matematik vb. Yapamayan çok zeki programcılar biliyorum. Yaptılar, çok daha iyi olabilirler.


Gerçek dünya kapalı kitap değil. Hemen hemen tüm durumlarda kapalı kitap testleri, iyi testlerin nasıl yapılacağını bilmeyen bir öğretmenin göstergesidir.
Loren Pechtel
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.