Algoritmaları gerçek bir programcı olarak öğrenmek şart mı? [kapalı]


21

Ben bir PHP programcısıyım ve şimdiye kadar algoritmaları öğrenmeye ihtiyacım olmadı ...

Şimdi Python'u (gerçek bir programlama dili) öğrenmeye başladım, çünkü matplotlib kullanmam gerekiyor. Bir Python algoritması kitabı okuyarak başlamak ve sonra matplotlib ve numpy'yi öğrenmek mantıklı mı yoksa matplotlib ve numpy'ye mi atlamalıyım?

Saygılarımla,


2
: Eğer algoritmaları öğrenmek ve belirli bir görev için en uygun olanı anlamıyorum, bu soru üzerine olanlar gibi cevaplarla sona stackoverflow.com/questions/5498865
kdgregory

1
Muhtemelen isimlerini veya arkasındaki teoriyi bilmeden, zaten birkaç algoritma uyguladınız. Bazı algoritmalar uygulamadan herhangi birinin herhangi bir faydalı programlamayı yapabileceğine inanmak zor .
tdammers

2
Algoritma, işleri en iyi şekilde nasıl yapacağınızı gösteren genel bir anlamdır . Programlamada minimum kaynakları kullanmanız ve performansı sağlamanız gerekir, bu yüzden her zaman kullanıyorsunuzdur. BTW, bunun anlamı Python (gerçek bir programlama dili) ??? PHP her şey kadar iyidir. Sadece bir web betik dili ve aklını kaçırmamak, uzun süredir iş dünyasında en iyisidir.
Pankaj Upadhyay

Yanıtlar:


35

Kesinlikle. Algoritmaları bilmeden, bir programın ne yaptığını nasıl anlayacaksınız?

Algoritma gelişimini anlamak esastır, böylece daha verimli programlayabilir ve daha iyi programlar yazabilirsiniz. Başlamak, en azından kontrol akışı (belki devlet otomasyonu ile, ancak her zaman gerekli değildir) ve Big O notasyonu gibi kavramların temellerini ve performansı nasıl etkileyebileceğini bilmelisiniz.


Hemfikir olsam da, ikinci kez Donald Knuth olmak için yerel bir topluluk kolejindeki algoritmalara giriş yapmanın ölçüsü hakkında ne kadar şey bilmeli?
İş

İyi eski Big Ohno notasyonu ...

1
Algoritma karmaşıklığı hakkında bilgi sahibi olmanın önemine katılıyorum ("büyük O notasyonu"). Ancak, “kesinlikle” cevabını kesinlikle kabul etmiyorum ”,“ algoritmaları gerçek bir programcı olarak öğrenmek şart mı? ”; Aslında, Python'u iyi öğrenmek, bir listeyi nasıl sıralayacağınızı (Python'un sizin için listelediğinden beri) veya Python'un sözlükleri nasıl kullandığını (Python programlayıcısının bir karma mekanizmayı uygulamak için ne zaman gerekli olduğunu) nasıl kullandığını, vb. öğrendikleri algoritmalar çünkü dilleri onları kutudan sağlamadı; modern çağ farklı.
Eric O Lebigot 21:11

17

Cevap hem evet hem hayır. Farklı algoritmaların nasıl çalıştığının ayrıntılarını veya bunların ardındaki teoriyi bilmeniz gerekmez - bu bilgisayar bilimcilerin işidir - ancak belirli bir görevi çözmek için hangi algoritmaların mevcut olduğu gibi temelleri bilmeniz gerekir. verilen durum için hangisi en iyisidir.

Sizin durumunuzda, bahsettiğiniz kütüphaneleri kullanmaya başlayabilirsiniz - onlar başkaları için hayatı kolaylaştırmak için başkaları tarafından yapılmıştır. Sadece kullanmak için onu geliştiren algoritmaları kesinlikle bilmenize gerek yok.


2
Böyle bir "modern" yorum için +1. Öğrenme ve öğretme algoritmaları, onları gerçekten uygulaması gereken kişilere ayrılmalıdır.
Eric O Lebigot 21:11

6

Evet, bir yaklaşımı diğerine nasıl uygulayacağınızı anlamak için. Ayrıca zaten çalışan birçok algoritma olduğu için "tekerleği yeniden icat etmek" istemezsiniz. Dışarıda olduklarını bilmiyorsanız, potansiyel olarak daha zayıf bir çözüm bulmak için zaman harcayacaksınız ve bunun neden zayıf olduğunu bile anlamıyorsunuz.


3

Bir programcı için algoritmalar bir demirci için bir çekiç. İşi bitirmek için olmadan geçin ve alternatifler kullanın, ancak işi doğru yapmak ve iyi yapmak istiyorsanız çok önemlidir.

Algoritmalarla ilgili iyi bir şey, programlama dilinden bağımsız olmasıdır, bu nedenle bir kez teoriyi öğrenin ve istediğiniz dilde uygulayabilirsiniz. İşte öğrenmeye başlamak için oluşturduğum güzel bir web sitesi: www.ambesty.com Java kullanıyorlar ancak öğrenilecek örnek kodlar geliyor. Veri sıkıştırma algoritmaları gibi daha karmaşık olanlara basit ADT ve Sıralama algoritmaları sunarlar. Çok ilginç bir okuma. İyi şanslar


1

PHP deneyiminize bağlı olarak , temel programlama kavramlarını bir dilden diğerine uyarlayabileceğiniz aşamadaysanız, bunu yapın . Bu, zamanınızı harcamanın en etkili yoludur.

Entegre etmek için ne yapmanız gerektiğini okuyun Matplotlib , numpy ve Python'u . Ve sonra sıkışırsanız daha derine dalmaya devam edin. Bu siparişi tavsiye ediyorum çünkü

  • daha az zaman alan
  • Eğer muhtemelen haberiokuyoruz her algoritmayı uygulayarak olmayacak

1

İş uygulamaları geliştiriyorsanız (yalnızca), Listeler, sıralar, sıralama, dizgede arama vb. Temelleri yalnızca öğrenin; böylece terminolojiyi, performansın nasıl etkilendiğini ve ölçüldüğünü öğrenebilirsiniz. Zamanınızın daha iyi kullanılması, yeni teknolojiye, OO modellerine, etkili veritabanı tasarımına, uygulamaya odaklanmak olacaktır. geliştirme metodolojileri ve benzeri!


1

Tamam - Bunun tam olarak neyi kastettiğiniz olmadığını biliyorum, fakat siz zaten (nasıl yapılacağını) algoritmaları biliyorsunuz. Tanımınıza bağlı olarak her programı bir algoritma için örnek olarak alabilirsiniz.

Bu yüzden korkma. Temel algoritmaları bilmek faydalıdır, temel veri yapılarını bilmek daha faydalıdır ancak tasarım “kalıplarını” bilmek daha iyidir. Bundan sonra, temel algoritmalar ve veri yapıları seçtiğiniz çerçevede uygulanacaktır ancak modeller büyük olasılıkla ...


0

Önce python'u öğrenin, sonra eğer hissederseniz algoritmaları inceleyebilirsiniz; Algoritmalar python'a özgü olmadığından - bunlar genel dillerdir.


0

Üniversiteye başlamadan önce, oldukça iyi bir programcı olduğuma inanıyordum ve birkaç yıllık iş tecrübem oldu. Fakat Üniversitedeki algoritmalar ve veri yapıları hakkında bir şeyler öğrendikten sonra, sahip olmanız gereken bir bilgi olduğunu düşünüyorum! Yaptığınız her şey için çok önemlidir. Bu bilgiyi her gün doğrudan kullanmasanız bile, yine de başınızın tepesinde olacak ve sizi daha iyi bir programcı yapacaktır.

Performans hakkında çok şey öğrenirsiniz ve performans genellikle bir numara olmasa da, algoritmaları bilmek, aptalca şeyler yapmanıza engel olur, gerçekten kötü performansla. Performans bir numara olmasa da, doğru bilgiyi almak için bu bilgiyi kullanmamak için hiçbir neden yoktur.

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.