Bir programcı olarak, düşük ve yüksek seviyeli programlama dillerini bilmeli miyim? [kapalı]


18

TCP / IP üzerinden uzaktan kumanda LED'lerinin bazı çalışmalarını yapmak için benimle iletişime geçtim, ancak deneyimim ve hazırlığım çoğunlukla üst düzey programlama diliyle ilgili. Ben iş hakkında benimle temasa geçen kişiye dedim ki:

"Eğer kendinize bir programcı diyorsan, tüm bunları bilmelisin"

Bir programcı düşük seviyeli programlamanın ayrıntılarını gerçekten bilmeli midir? Yoksa kara kutu kavramı, teorik bilgi olarak ele alabilir miyim, ancak bunu yapmak zorunda değilim veya düşük seviyeli dil çözümleri uygulamak, düşük seviyeli programlamanın benim uzmanlığım olmadığını akılda tutarak?


8
Yüksek düzeyde programlama, sen gerekir soyutlama alt seviyelerini maske dışına veya bitmiş bir şey almak olmaz. Daha düşük seviyelerde çalışabilmek oldukça faydalıdır, sadece tüm soyutlama seviyelerinden her şeyi bir kerede yapmaya çalışmayın. Gerek yok, ancak istemiyorsanız düşük seviyeli işler için başvurmayın.

1
@delnan: Yüksek seviyede çalışırken, elbette daha düşük seviye detaylarını maskelemek gerekir. Ancak, her programcının programladıkları makinelerin nasıl daha düşük seviyede çalıştığını bilmesi gerektiğini düşünüyorum. Bilginin çok ayrıntılı olması gerekmez - basit bir bilgisayarın sıfırdan nasıl oluşturulacağını bilmek oldukça yeterlidir.
Zamanlayıcı

4
“Kendinize bir programcı diyorsan, tüm bunları bilmelisiniz” Eğer sizi o kadar kötü isteseler ki arka plan eksikliğiniz için lanet ettiler, bir şeyler çok yanlış. Hiçbir anlam ifade etmedikleri yorumlarına aldırmazdım. Ya arka planınızla sizi ister ya da sizi istemezler ve sahip olmadığınız arka plan için sizi lanetlememelidirler.
S.Lott

3
Başka bir vaka, "Vay canına, o mermiyi kaçırdığım için mutluyum!" Gerçekten böyle bir züppe için ya da böyle bir züppe ile çalışmak istemiyor musunuz?
Edward Strange

2
@Schedler - ve eğer kendi tahtalarını yakmıyorlarsa, tamamen yeni başlayanlar.
Edward Strange

Yanıtlar:


37

Kişiniz ne hakkında konuştuklarını bilmiyor. Birçok dil, metodoloji, teknoloji vb. Vardır, böylece tek bir kişi gerekli tüm ayrıntıları çok iyi bilemez. Bir programcı olarak bilmeniz gerekenler, işi yapmak için neye ihtiyacınız olduğunu nasıl öğreneceğiniz ve hangi programlama dilini kullanmanız gerektiğine bakılmaksızın, bir çözüme ulaşmak için uygulayabileceğiniz bir problem çözme yaklaşımına nasıl sahip olacağınızdır.

Bilmediğinizi kabul etmek sorun değil, aynı zamanda ne ile karşılaşırsanız karşılaşın, istenen sonucu elde etmek için yeterince öğrenebildiğinizi kanıtlayabilirsiniz. İyi programcılar çözümlerini çeşitli programlama dillerinde uygulayabilen iyi problem çözücülerdir.

İletişiminizin yaptığı tavrı olan biri için çalışmam.


4
+1: Yorum ilk başta bir anlam ifade etmiyor.
S.Lott

Her ne kadar bahse girsem de, saat başına onu şarj etmekten mutluluk duyacak birçok meclisli geliştirici var.
Erik Reppen

22

"Eğer kendinize bir programcı diyorsan, tüm bunları bilmelisin"

Bu ifadeye kesinlikle katılmıyorum. Bu, bir şeften herhangi bir şey pişirmesini, herhangi bir motorlu taşıt aracını kullanmasını isteyen bir sürücüyü veya tüm hastalıkları bilmesi için bir doktordan gülünç bir varsayımdır.

Bir programcı olmak için, bir işi otomatik olarak yapmak için bazı dillerde yazma yazılımı vermeyi bilmek gerekir. Diller ve görevler, bir şefin nasıl yapacağını bildikleri, bir sürücünün nasıl çalışacağını veya bir doktorun nasıl teşhis edileceğini bilmesi gibi, programcıdan programcıya kadar değişecektir.


2
Evet, bir soyutlama bozulana ve kodlarının neden bir performans sorunu sergilediğine, neden bazı dış kütüphanelerin veriyi çökerttiğine / bozduğuna dair hiçbir fikri yok. her ikisini de yapabilenler olarak.
Ed

4
Amacınız eksik. Evet.
maple_shaft

7
Yine de nasıl öğreneceklerini bilmeleri gerektiğini düşünüyorum. Modern programlamanın büyük bir kısmı neyi hatırlamak ve neyi referans olarak dosyalamak gerektiğini bilmektir.
Michael K

8

Hayatında hiç bir kod satırı yazmamış biri gibi konuşulur. Bu, teklif ettiğiniz sürenin yarısında bunu yapabileceğinizi hisseden aynı kişi olacaktır. Salakça tartışmayın.

Sınırlarınızı bilerek çok daha fazla bilgi ve karakter gösterdiniz. Bu kişi hiçbir şey bilmediği şeyler hakkında konuşuyor.

Sanırım her marangoz süslü bir mobilya parçasını nasıl oymalı bilmeli. Eğer bir pilot bir uçağı uçurabilirse, hepsini uçurabilir.


Katılıyorum, çünkü benim doktor olduğun için nasıl Açık kalp ameliyatı yapılacağını bilmelisin. Ancak gerçek hayatta bunu yapmak için bir uzman olması gerektiğini biliyorsunuz, ancak programlamada, dışarıdan ne zaman 'tüm kudretli programcılar' olarak baktığınızı söylemek zor.

6

Okuldaki birçok CS programı, düşük seviyeli programlama hakkında size bilgi verecektir. Örneğin, 8088 işlemcisini kullanarak derleyici sınıflarım vardı (Tamam ... bu yüzden beni biraz tarihlendiriyor). Bununla birlikte, bu günlerde birçok ticaret okulunun bu bilgiyi atladığını düşünüyorum - bu doğru değilse bir yorumla bağlantı kurun.

Alt satırda, çip seviyesinde ne olduğunu bilmek her zaman iyidir - ayrıca, yüksek seviyeli dilleriniz nihayetinde çalıştırıldığında sona erecektir.

Ancak, birisinin size bir programcı olmadığınızı söylemesini sağlamak, çünkü şu anda düşük seviyeli programlamanın cahil olduğunu bilmiyorsunuz. Mevcut proje için bu becerilere sahip olmanız gerekiyorsa, ihtiyacınız olan becerileri öğrenmek ve bunları uygulamak için yeterli zeki veya motivasyonunuz olmalıdır.

Müşteri sizinle zaten bu şekilde konuşuyorsa, bu projeyi almamayı ciddi olarak düşünmeliyim - bunun nereye gideceğini asla bilemezsiniz.


6

İnsanlar "Kendinizi bir programcı olarak tanımak için X'i bilmeniz gerekiyor" dediğinde bunu gerçekten hor görüyorum. Gerçekten mi? Bazı insanlar bütün gün COBOL üzerinde çalışıyor ve SEVİYOR. Bu konuda ve sorun alanlarında o kadar iyi olmuş olabilirler ki, yanımızda hepimiz taklitçiyiz.

Cidden, insanlara karşılaştıkları problemleri serin ve ilginç bir şekilde çözmeleri için saygı gösterin. Büyük problem çözmenin çok çeşitli geçmişlerden geldiğini anlayın. Herkesin aynı şekilde düşünebilmesi için bilmesi gereken yeteneklerin "kontrol listesi" nde uzmanlaşıp uzmanlaşmadıkları değil. İstediğimizin TAM OPSİYONU budur. Herkesin "kontrol listesi" farklıdır ve farklı olmalıdır. Ne kadar farklı olursa o kadar iyi. Programlama bugünlerde problem çözme. İyi yapanlara saygı duyun ve herkesin farklı güçlerle masaya geldiğini anlayın. Bir ekip olarak etkili bir şekilde çalışabilmemiz için birbirimize yardımcı olmamızın tek yolu budur. Sadece "C" ya da başka bir şey bilmek bu adamın harika olmasına yardımcı olduğu için,


3

Bunu okumanızı tavsiye ederim:

http://www.joelonsoftware.com/articles/LeakyAbstractions.html

Açıklandığı gibi, bir soyutlama kullandığınızda, daha düşük seviyenin ne yaptığınız üzerinde her zaman bir etkisi vardır. Bu performans, arıza nedeni, güvenlik nedenleri vb. Olabilir.

Kesinlikle, şimdi bu şeyler hakkında gerekir. Özellikle bir asm veya CPU mimarisi uzmanı değil. Ancak daha fazla bilgi sahibi olmanız gerektiğinde kendinizi belgelemek için yeterince bilmek gerçekten de bir zorunluluktur.


Belki TCP / IP'nin nasıl çalıştığını bildiğimi açıklığa kavuşturmalıyım =), benim açımdan TPC / IP üzerinden soketler gibi bir şey uygulamak bilgimin ötesinde, anında öğrenebilir miyim? Tabii ki, öğrenmek ister miyim? Aslında değil, çünkü nihai sonucun bir üretim ortamı için tamamen kanıtlanacağından veya verilen zamandaki tüm gereksinimlere uyacağından emin değilim. Sadece üst düzey dilde uzmanlık seviyesine ulaşmamın zamanını düşünüyorum ve verilen zamanın riskli bir his veren tüm gotcha'ları tanımak için yeterli olacağını sanmıyorum.

Mesele bu: uzman olmanıza gerek yok. Ama temelleri bilmeniz gerekiyor. Böylece, kullandığınız soyutlamanın sınırlarının ne olduğunu bilirsiniz - bu minimumdur ve sınıra ulaşıldığında kendinizi nasıl belgeleyeceğinizi bilirsiniz.
deadalnix

2

Onun iddiası No True Scotsman'ın mantıksal yanlışlığının iyi bir örneğidir .

Bununla birlikte, düşük ve yüksek seviye programlama arasındaki fark dil değil, uygulama bilgisi alanıdır. True değerine atamak, bir LED'i açmak veya bir widget'ta fare tıklaması olaylarını etkinleştirmek anlamına gelebilir. Dil umrumda değil.

Örneğin, bir arduino üzerinde bir LED matrisi ile çalışmak için bu kütüphaneye bir göz atın . Burada roket bilimi değil ve gerçekten herhangi bir programcı "düşük seviyeli oh hayır!" zihinsel engel.


1

Her Programlama Dilinin kendi artıları ve eksileri vardır. Birkaçını öğrenmek, size bir proje verildiğinde ne kullanacağınız ve etkili bir şekilde nasıl kullanacağınız konusunda harika bir algı verecektir.

Bir programcı olarak, herhangi bir sorunu çözmek için tek aracınız olarak kullanarak belirli bir PL üzerinde uzmanlaşabilirsiniz, ayrıca çok fazla PL de biliyorsunuz, ancak bu uçlar arasında hiçbir şey ve çok daha fazlası üzerinde uzmanlaşabilirsiniz.

Belki de "Cümle" nin hayal kırıklığına uğradığını söyleyen kişi, belki konuştuğu tek kişi sen değilsin.

problemi bilmek ve problemi etkili bir şekilde çözmek için hangi beceri setinin gerekli olduğunu bilmek bir programcının iyi bir özelliğidir. Ne yazık ki durumunuzda, gerekli beceri setine sahip olmadığınız için, irtibat kişinizi gerekli beceri setine sahip başka bir programcıya yönlendirebilirsiniz.

şerefe,

wardy


1

Teorik bilgiye sahip olmak iyidir. Edebilme öğrenmek , gerektiğinde düşük seviyeli dili çok önemli.

Ama "kendinize bir programcı diyorsan, tüm bunları bilmelisin", her şey hakkında her şeyi bilen kim? Onları bile yapmadan önce?


-2

Yeniden ifade edeceğim

"Eğer kendinize bir programcı diyorsan, tüm bunları bilmelisin"

TO

"Kendinize bir programcı diyorsanız, tüm bunları hızlı bir şekilde öğrenebileceğiniz kadar bilmeniz gerekir"

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.