Apakah penting untuk mempelajari algoritma untuk menjadi programmer nyata? [Tutup]

21

Saya seorang programmer PHP, dan sampai sekarang saya belum perlu mempelajari algoritma ...

Sekarang saya mulai belajar Python (bahasa pemrograman nyata), karena saya perlu menggunakan matplotlib. Apakah masuk akal untuk memulai dengan membaca buku algoritma Python dan kemudian belajar matplotlib dan numpy atau haruskah saya beralih ke matplotlib dan numpy?

Salam Hormat,

André
sumber
2
Jika Anda tidak mempelajari algoritme, dan memahami apa yang paling sesuai untuk tugas yang diberikan, Anda berakhir dengan jawaban seperti yang ada di pertanyaan ini: stackoverflow.com/questions/5498865
kdgregory
1
Anda mungkin sudah menerapkan beberapa algoritma, tanpa benar-benar mengetahui nama mereka atau teori di baliknya. Sulit dipercaya ada yang bisa melakukan pemrograman yang berguna sama sekali tanpa menerapkan beberapa algoritma.
tdammers
2
Algoritma hanyalah akal sehat tentang Bagaimana melakukan hal-hal secara optimal . Dalam pemrograman Anda perlu menggunakan sumber daya minimum dan memastikan kinerja, maka Anda menggunakannya setiap saat. BTW, apa artinya ini Python (bahasa pemrograman nyata) ??? PHP sama bagusnya dengan yang lain. Hanya saja itu lebih dari bahasa scripting web dan pikiran Anda, itu yang terbaik dalam bisnis untuk waktu yang lama.
Pankaj Upadhyay

Jawaban:

35

Benar. Tanpa mengetahui algoritma, bagaimana Anda akan memahami bagaimana suatu program melakukan apa yang dilakukannya?

Sangat penting untuk memahami pengembangan algoritma sehingga Anda dapat memprogram lebih efisien dan menulis program yang lebih baik. Memulai Anda setidaknya harus tahu dasar-dasar konsep seperti aliran kontrol (mungkin melalui otomat keadaan, tetapi itu tidak selalu diperlukan) dan notasi O Besar dan bagaimana hal itu dapat mempengaruhi kinerja.

Andrew Arnold
sumber
Sementara saya setuju, seberapa banyak yang harus diketahui pada skala pengantar algoritma di sebuah perguruan tinggi setempat untuk kedua kalinya menjadi Donald Knuth?
Pekerjaan
Notasi Besar Ohno yang bagus ...
1
Saya setuju dengan pentingnya mengetahui tentang kompleksitas algoritma ("notasi O besar"). Namun, saya sangat tidak setuju dengan jawaban "mutlak" untuk "apakah penting untuk mempelajari algoritma untuk menjadi programmer nyata"; sebenarnya, mempelajari Python dengan baik jauh lebih berguna daripada mengetahui cara mengurutkan daftar (karena Python mengurutkan daftar untuk Anda) atau bagaimana Python menangani kamus (yang mana programmer Python pernah butuhkan untuk mengimplementasikan mekanisme hashing?), dll. Secara historis, orang memiliki algoritma yang dipelajari karena mereka bahasa tidak memberikan mereka di luar kotak; era modern berbeda.
Eric O Lebigot
17

Jawabannya adalah ya dan tidak. Anda tidak perlu mengetahui perincian tentang bagaimana algoritma yang berbeda bekerja atau teori di belakangnya - itulah tugas ilmuwan komputer - tetapi Anda perlu mengetahui dasar-dasarnya, seperti apa algoritma yang tersedia untuk menyelesaikan tugas tertentu dan mana yang terbaik untuk situasi tertentu.

Dalam kasus Anda, Anda bisa mulai menggunakan perpustakaan yang Anda sebutkan - mereka dibangun oleh seseorang hanya untuk membuat hidup lebih mudah bagi orang lain. Anda tentu tidak perlu tahu algoritme yang digunakan untuk membuatnya hanya untuk menggunakannya.

casablanca
sumber
2
+1 untuk komentar "modern" seperti itu. Algoritma pembelajaran dan pengajaran harus disediakan untuk orang-orang yang benar-benar perlu mengimplementasikannya.
Eric O Lebigot
6

Ya, sehingga Anda mengerti bagaimana menerapkan satu pendekatan di atas yang lain. Anda juga tidak ingin "menemukan kembali roda" karena ada banyak algoritma yang sudah bekerja. Jika Anda tidak tahu mereka ada di luar sana, Anda akan membuang waktu untuk menemukan solusi yang berpotensi lebih lemah dan bahkan tidak mengerti mengapa itu lebih lemah.

jmq
sumber
3

Algoritma untuk seorang programmer adalah palu untuk pandai besi. Tentu Anda bisa bertahan tanpa dan menggunakan alternatif untuk menyelesaikan pekerjaan, tetapi jika Anda ingin melakukannya dengan benar dan melakukannya dengan baik itu sangat penting.

Hal yang baik tentang algoritma adalah bahwa itu adalah bahasa pemrograman yang independen, jadi pelajari teorinya sekali dan Anda dapat mengimplementasikannya dalam bahasa apa pun. Berikut adalah situs web bagus yang telah saya bangun untuk mulai belajar dari: www.ambesty.com Mereka menggunakan Java tetapi dilengkapi dengan kode contoh untuk dipelajari. Mereka menawarkan algoritma ADT dan Sorting sederhana untuk yang lebih kompleks seperti algoritma kompresi data. Sangat menarik dibaca. Semoga berhasil

ailan
sumber
1

Bergantung pada pengalaman PHP Anda, jika Anda berada pada tahap di mana Anda dapat mengadaptasi konsep pemrograman dasar dari satu bahasa ke bahasa lain, lakukanlah . Ini akan menjadi cara paling efisien untuk menghabiskan waktu Anda.

Baca apa yang perlu Anda lakukan untuk mengintegrasikan Matplotlib , numpy, dan Python. Dan kemudian jika Anda terjebak, terus menyelam lebih dalam. Saya merekomendasikan pesanan ini karena

  • itu kurang memakan waktu
  • Anda mungkin tidak akan menerapkan setiap algoritma yang Anda baca
JK
sumber
1

Jika Anda mengembangkan aplikasi bisnis (hanya), Dapatkan untuk mempelajari dasar-dasarnya saja, seperti daftar, antrian, penyortiran, pencarian string, dll. Sehingga Anda akan mempelajari terminologi, bagaimana kinerja dipengaruhi dan diukur dan sebagainya. Penggunaan waktu Anda yang lebih baik adalah berfokus pada teknologi baru, pola OO, desain basis data yang efektif, aplikasi. metodologi pengembangan, dan semacamnya!

Tidak ada kesempatan
sumber
1

Ok - Saya tahu ini bukan apa yang Anda maksudkan, tetapi Anda sudah tahu (bagaimana melakukan) algoritma. Tergantung pada definisi Anda, Anda dapat mengambil setiap program sebagai contoh untuk suatu algoritma.

Jadi jangan takut. Ini berguna untuk mengetahui algoritma dasar, lebih berguna untuk mengetahui struktur data dasar tetapi lebih baik untuk mengetahui desain- "pola". Setelah semua, algoritma dasar dan struktur data akan diimplementasikan dalam kerangka pilihan Anda tetapi pola kemungkinan besar tidak akan ...

Carsten
sumber
0

Pelajari python terlebih dahulu jika Anda mau, Anda bisa mempelajari algoritma; Karena algoritma tidak spesifik python - mereka adalah umum semua bahasa.

eggie5
sumber
0

Sebelum saya mulai di Universitas, saya percaya saya adalah seorang programmer yang cukup baik, dan saya memiliki beberapa tahun pengalaman kerja. Tetapi setelah saya belajar tentang algoritma dan struktur data di Universitas, saya merasa itu adalah pengetahuan yang harus Anda miliki! Ini penting untuk semua yang Anda lakukan. Meskipun Anda mungkin tidak menggunakan pengetahuan itu secara langsung setiap hari, itu akan tetap di atas kepala Anda, dan itu akan membuat Anda menjadi programmer yang lebih baik.

Anda belajar banyak tentang kinerja, dan meskipun kinerja biasanya bukan yang utama, mengetahui algoritma akan mencegah Anda melakukan hal-hal bodoh, dengan kinerja yang sangat buruk. Meskipun kinerja bukan nomor satu, tidak ada alasan untuk tidak menggunakan pengetahuan itu untuk membuat keputusan yang tepat.

Niklas H
sumber