/Programcı olarak adlandırılacak algoritmaları ve veri yapılarını anlamam gerekir mi?
Programcı olarak adlandırılacak algoritmaları ve veri yapılarını anlamam gerekir mi?
11 Kas 2010 sushil bharwani
Yapmanız gereken tek şey yapıştırıcı kodu yazmaksa, kendinize bir kod maymunu diyebilirsiniz. Bir sürü tutkal kodu yazılmalı ve bir kod maymunu olarak iyi bir yaşam yapabilirsiniz. Kendinize Gerçek Programcı demek için TM ve kodun sıfırdan yazılması gerektiğinde güvenilir olun, algoritmaları, veri yapılarını, bellek yönetimini, işaretçileri, Montaj dilini vb. bilmeniz ve bu bilgileri, denemeleri değerlendirmek için nasıl kullanacağınızı anlamanız gerekir.
11 Kas 2010 dsimcha
tarihi bilmeyenler onu yeniden keşfetmeye mahkumdur
11 Kas 2010 Steven A. Lowe
Java OTOH için bir fark var. Sanırım Java'nın standart kütüphanesi size ihtiyacınız olan herhangi bir veri yapısı hakkında bilgi veriyor.
Doğru verileri seçebilmeniz için bu veri yapılarını bilmeniz ve ayırt etmeniz ve farklı durumlarda nasıl performans gösterdiğini anlamanız gerekir.
Java'da, bazı çok özel durumlarda daha iyi hız elde etmek için sonunda bir hashmap için kendi uygulamanızı yazmak istemeyeceksiniz (örneğin, işlemek istediğiniz anahtarlar optimizasyona izin veren bazı özel kısıtlamaları yerine getirirse).
Sıralama algoritmaları söz konusu olduğunda, bunları bilmek veya anlamak için çok fazla ihtiyaç yoktur, çünkü tek başına bir tane uygulamaya gerek yoktur. Bununla birlikte, size böyle bir algoritma verilirse, onu anlayabilmeniz ve uygulayabilmeniz gerekir.
İki şey kesin:
Siz böyle bir bilgiye güvenmeden programcı olarak kariyer yapabilirsiniz.
Kesinlikle onları tanımak size zarar vermez.
Veri yapıları ve algoritmalar basitçe anlaşılabilecek bir şeydir. Ve uygulama veya sistem mühendisliğinin karmaşıklıklarına kıyasla son derece açık ve resmileştirilmiş ve bu nedenle oldukça önemsiz bir şeydir. Onlar bulmacada sadece küçük bir parça, ama kavramak kolaydır - eğer biraz zaman ayırmaya istekli iseniz.
Yani hayır, onlara ihtiyacınız yok, ama onları tanımak sizin yararınıza olacaktır .
11 Kas 2010 back2dos
Bu, 'programcı' ve 'yazılım mühendisi' arasında anlamsal olarak anlamlı bir ayrımın olabileceği bir durum olabilir. Bu bağlamda, özellikle, çeşitli programlama dilleri ve ilgili teknolojiler hakkında bilginiz olduğunu ve bunları istenen sonuçları elde etmek için kullanabileceğinizi görüyoruz. Bu, 'bilgisayar programcısı'nın iyi bir operasyonel tanımıdır.
Kendimi bir yazılım mühendisi olarak görüyorum. Çalışmamın günlük yönlerinin çoğunda, muhtemelen aynı şeyleri yapıyorum. İstenen bazı sonuçları elde etmek için bilgisayar dilini ve ilgili teknolojileri kullanıyorum. Ancak, veri yapıları ve algoritmalar hakkında bir anlayışım var ve bu bilginin çok daha fazlasını yapma yeteneğimin temel bir dayanağı olduğunu düşünüyorum.
Çoğu zaman - her zaman olmasa da - işim, belirgin çözümleri olmayan karmaşık sorunlara çözüm bulmayı, kullandığım çerçevenin özellikleri veya çalıştığım dilin özellikleriyle doğrudan ele alınan bir şey içermiyor ile. Burada, sorunu analiz etmem ve bir çözüm tasarlamam gerekiyor ve bazen bu süreç büyük ölçekli mimari alanına giriyor.
Bu tür işleri yapmak için bu daha derin konuların mükemmel bir şekilde anlaşılması gerekse de, yeterli değildir. Başka bir deyişle, bir karma tablonun nasıl çalıştığını veya bir yığın türünün neden genellikle iyi performans özelliklerine sahip olduğunu bilmek bir sistem mimarı veya kıdemli bir mühendis olmak için yeterli değildir. Bu mantıklı bir başlangıç ​​yeridir ve oradan daha derine inmeye ve daha geniş çapta seyahat etmeye ve daha büyük sorunların üstesinden gelmek için gerekli deneyimi kazanmaya başlayabilirsiniz.
Sorunuzu cevaplamak için kendinize, "Ne olmak istiyorum? Kariyerimle nereye gideceğim?" Yaptığınız şeyi yapmaya devam etmekten memnunsanız, karşılaştığınız büyük ölçüde keyfi röportaj sorularını yanıtlamak için yeterli veri yapılarını ve algoritmaları öğrenmek isteyebilirsiniz.
Kariyerinizde büyümek istiyorsanız ve bunun için gerekli olan tutkunuz varsa, bu konuları olabildiğince sıkı bir şekilde kucaklamalısınız. Onlar üzerinde çalışmak için biraz zamanınız varsa, açık fikirli ve gerçek bir coşku varsa, harika ve heyecan verici şeyler bulacaksınız. Quicksort'u ilk anladığım günü asla unutmayacağım. Heyecan ve keşif duygusu, hayatımın geri kalanı için rotayı belirledi ve bunun için daha minnettar olamadım. Şimdi yazılım mühendisi olarak çalışmanın dışında hiçbir şey yapmayı hayal bile edemiyorum.
Ne seçerseniz seçin iyi şanslar.
11 Kas 2010 Adam Crossland
İşlerin ne için olduğuna bağlıdır. Bu tür şeyler oldukça standart röportaj sorularıdır, ancak aynı zamanda oldukça yaratıcı değildirler ve muhtemelen işle hiç ilgili değildirler - kesinlikle listelediğiniz teknolojileri kullanan bir iş değildir.
Görüşme soruları olarak benim için, herhangi bir genel programlama yeteneği veya bilgisi ölçüsü yerine bir Bilgisayar Bilimi derecesi yapıp yapmadığınızı (ve hatırlayabileceğiniz) iyi bir yargıçtırlar.
Röportajdan geçebilmeniz için bu şeyleri öğrenmenizi ya da sadece bu şeyleri soran herhangi bir yerin sizin için olmadığını kabul edersiniz, ama hayır, kendinize bir programcı çağırmak için onları bilmenize gerek yoktur.
11 Kas 2010 Jon Hopkins
Çok sayıda API programcıları aka kod maymunları ile röportaj yaptım ve röportajların çoğunda rutin olarak performans verimli ve ölçeklenebilir sistemler tasarlayamadılar. Alt satır: bir sürü API bilmek size ekmek getirecektir, ancak tereyağı için bilgi işlemin temelinden başlamanız gerekir.
28 Kas 2010 Fanatic23
"Evet, tabii ki yine de kendinize bir programcı diyebilirsiniz" diye ekleyeceğim. Ama ne tür bir programcı olmak istiyorsun? En iyi programcıların teorik temelde en azından bir miktar temelleri olduğunu düşünüyorum. neden belirli bir veri yapısını/algoritmasını ve bununla birlikte gelen ödünleşimleri seçtiler. Görüşme yaptığım herhangi bir geliştiricinin aynı jargonu kullanmasalar bile en azından temel bir anlayışa sahip olmasını bekliyorum (jargonu bilmemek, diğer geliştiricilerle iletişim kurmayı daha zor bulacağınız anlamına gelir).
11 Kas 2010 Martijn Verburg
Algoritmalar bilgisi, seçimlerinizin nasıl yapılacağını güvenle söylemenizi sağlar ölçek! Şahsen bunun kıdemli bir programcı olmak için gerekli olduğunu düşünüyorum
28 Kas 2010 user1249
"İyi bir programcı olmak istiyorsanız, iki yıl boyunca her gün programlıyorsunuz. Eğer dünya çapında bir programcı olmak istiyorsanız, on yıl boyunca her gün programlayabilirsiniz veya iki yıl boyunca her gün programlayıp bir algoritma sınıfı alabilirsiniz ."
-Charles E. Leiserson
Algoritma Analizinden iyi tavsiye Charles E. Leiserson - MIT
8 Nis 2013 milan-j
Şu anda iyi bir programcı olabilirsiniz, ancak Veri Yapısı, Algoritmalar ve bilgisayar bilimindeki diğer konular hakkında bilgi sahibi olmak, kendinizi birçok yönden geliştirmenize kesinlikle çok yardımcı olacaktır:
Bir şeyler yaparken daha etkili ve daha hızlı olabilirsiniz. Zaten Bilgisayar Bilimi derecesine sahip olan ve bu konuların çoğunu bilen insanlar bile kendilerini geliştirmek için son gelişmelerden haberdar olma eğilimindedirler.
Bu bilgi, daha az ölçüde de olsa, daha sonra programcıdan yönetim yoluna geçerseniz, bu bilgi ile projelerin teknik yönlerini daha iyi anlayabileceğinizi söylemek için de iyi olacaktır.
Elbette görüşmelerde veri yapısı ve algoritmalar çok sorulur, bu yüzden onları tanımanın faydalı olmasının bir nedeni daha vardır.
11 Kas 2010 aditya
Projeye bağlı: Bilgisayar Mühendisliğinde BEng'im ve analist programcısı olarak çalışıyorum.
Tasarımda (test, doc, kod tasarımı) çalışmak için çok zaman harcadım. Ancak, bir hata (veya kötü performans) bulduğumda veya yeni bir veri yapısını kodlamam gerektiğinde (uygulama için gereksinim çok YENİ olduğundan), algoritmadaki sorunun nerede olduğunu anlamam ve onu düzeltmem gerekir ( Bunu çok iyi yapmadım, bu yüzden :))
Klasik algoritmalar ve veri yapıları geliştirici dünyasında bir çeşit "sözlük modeli" dir.
Bazı mükemmel bağlantılar:
11 Kas 2010 alepuzio
Karmalardan, ağaçlardan, yığınlardan, kuyruklardan ve sıralama algoritmalarından bahsediyorsunuz. Bahsettiğiniz teknolojiler çoğunlukla web sayfası ve web komut dosyasıyla ilgilidir. Ağaçları en azından kesinlikle anlamalısınız, böylece DOM ile iyi çalışabilirsiniz. Ancak komut dosyası yazmak için yapmanız gereken tek şey buysa, muhtemelen sorun olmaz demektir. Gerçek bir programcı için ticaret araçlarının çoğuna ihtiyacınız olmayacak. Ancak bunun nedeni, Web komut dosyalarının çoğunu oluşturan string-juggling ile çoğumuzun "program yazma" olarak düşündüğü şey arasında büyük bir fark olması.
Pratik olarak günlük olarak hash ve ağaçlarla çalışırım ve daha az sıklıkta ama yeterince sık yığınlar ve kuyruklarla çalışırım. Sıralama temel olarak çözülmüş bir sorundur; Hemen hemen her dilde standart kütüphanede bir hızlı sıralama, temel koleksiyon türleri üzerinde bir Sıralama yöntemi vb. bulunur, ancak quicksort'un performansının hangi koşullar altında ciddi şekilde düşebileceğini ve sıralamayı geciktirmek için doğru stratejileri bilmelisiniz.
Bu ilkeleri ve nasıl çalıştıklarını bilmiyor olsaydım, muhtemelen işe yarayan kodlama çözümlerini hackleyebilirdim, ancak çok kaliteli çözümler olmazlardı. Yavaş koşuyorlardı, okunmaları zor ve değiştirmeleri, tekrar kullanmaları ya da uzatmaları zor. Eğer iyi bir programcı olmayı öğrenmek istiyorsanız, algoritmalarınızı ve veri yapılarınızı mutlaka okumalısınız. Kodunuzun kalitesini gerçekten artıracaklar.
11 Kas 2010 Mason Wheeler
Veritabanındaki çok büyük dizeler / kayıtlar listesinde hızlı arama yapma
Programlamada DAG (Yönlendirilmiş Asiklik Grafiği) ne zaman kullanılır?
"Bilinmeyen" ve "eksik" değerleri bir değişkende nasıl saklanırken, yine de "bilinmeyen" ve "eksik" arasındaki farkı koruyabilirim?
OOP'tan önce, veri yapısı üyeleri halka açık mıydı?
Yardımcı nedir? Bir tasarım deseni mi? Bu bir algoritma mı?
Bir yığın ve öncelik sırası arasındaki fark
Soyut Veri Türü ve Veri Yapısı
Struct ve std :: pair kullanımı arasında ne fark vardır?
Bir algoritma patentlenebilir mi?
Bir karma ve sözlük arasındaki fark nedir?
En iyi uygulama / İki yönlü veri senkronizasyonu için modeller