Чи важливо вивчити алгоритми, щоб бути справжнім програмістом? [зачинено]


21

Я програміст PHP, і до цього часу мені не потрібно було вивчати алгоритми ...

Тепер я починаю вивчати Python (справжню мову програмування), тому що мені потрібно використовувати matplotlib. Чи є сенс починати з читання книги алгоритму Python, а потім вивчати matplotlib і numpy або я повинен перейти до matplotlib і numpy?

З повагою,


2
Якщо ви не впізнаєте алгоритми, і зрозуміти , що є найбільш підходящим для даного завдання, ви в кінцевому підсумку з відповідями , як ті , на це питання: stackoverflow.com/questions/5498865
kdgregory

1
Ви, напевно, вже реалізували декілька алгоритмів, не знаючи насправді їх назв чи теорії. Важко повірити, що хтось взагалі міг би зробити якесь корисне програмування, не застосовуючи деякі алгоритми.
tdammers

2
алгоритм - це просто здоровий сенс того, як робити все оптимально . У програмуванні потрібно використовувати мінімум ресурсів і забезпечувати продуктивність, отже, ви постійно його використовуєте. BTW, що це означає Python (справжня мова програмування) ??? PHP так само добре, як і все інше. Це просто те, що це більше мова веб-сценаріїв, і ви пам’ятаєте, що це найкраще в бізнесі вже давно.
Pankaj Upadhyay

Відповіді:


35

Абсолютно. Не знаючи алгоритмів, як ще ви зрозумієте, як програма робить те, що робить?

Важливо зрозуміти розробку алгоритму, щоб ви могли більш ефективно програмувати та писати кращі програми. Починаючи з початку, ви повинні принаймні знати основи таких понять, як контрольний потік (можливо, через автоматичний стан, але це не завжди необхідно) та позначення Big O та те, як це може вплинути на продуктивність.


Хоча я погоджуюсь, скільки слід знати про масштаби передачі вступу до алгоритмів у коледжі місцевої громади, коли вдруге став Дональд Кнут?
робота

Старі добрі позначення Великого Оно ...

1
Я погоджуюсь з важливістю знань про складність алгоритму ("велика нотація O"). Однак я категорично не погоджуюся з "абсолютно" відповіддю на "чи важливо навчитися алгоритмам бути справжнім програмістом"; насправді, добре вивчити Python набагато корисніше, ніж знати, як сортувати список (оскільки Python сортує списки для вас) або як Python обробляє словники (якому програмісту Python коли-небудь потрібно було реалізувати механізм хешування?) тощо. Історично люди мають вивчені алгоритми, оскільки їх мова не надала їх поза рамками; сучасна епоха інша.
Ерік О Лебігот

17

Відповідь - і так, і ні. Вам не потрібно знати подробиці того, як працюють різні алгоритми, або теорії, що стоїть за ними - це завдання комп'ютерних вчених, - але ви повинні знати основи, наприклад, які алгоритми доступні для вирішення конкретної задачі та який найкращий для даної ситуації.

У вашому випадку ви можете просто почати користуватися згаданими вами бібліотеками - їх створив хтось лише для того, щоб полегшити життя іншим. Вам, звичайно, не потрібно знати алгоритми, які розробили його лише для того, щоб використовувати його.


2
+1 за такий "сучасний" коментар. Алгоритми навчання та навчання повинні бути зарезервовані для людей, яким реально потрібно їх впроваджувати.
Ерік О Лебігот

6

Так, щоб ви зрозуміли, як застосовувати один підхід над іншим. Ви також не хочете "винаходити колесо", оскільки існує багато існуючих алгоритмів, які вже працюють. Якщо ви не знаєте, що вони там, ви витратите час на винахід потенційно слабшого рішення і навіть не зрозумієте, чому воно слабше.


3

Алгоритми програмісту - молот ковалю. Впевнені, що ви можете обійтися без використання альтернатив і виконати роботу, але якщо ви хочете зробити це правильно і зробити це добре, це важливо.

Хороша річ у алгоритмах полягає в тому, що це мова програмування незалежна, тому вивчіть теорію один раз, і ви зможете реалізувати її на будь-якій мові. Ось хороший веб-сайт, який я будував, щоб почати вчитися на веб-сайті: www.ambesty.com Вони використовують Java, але вона має зразок коду для навчання. Вони пропонують прості алгоритми ADT і сортування до складніших, таких як алгоритми стиснення даних. Дуже цікаво читати. Удачі


1

Залежно від вашого досвіду PHP, якщо ви перебуваєте на етапі, коли ви можете адаптувати основні концепції програмування з однієї мови на іншу, зробіть це . Це був би найефективніший спосіб провести свій час.

Прочитайте, що вам потрібно зробити, щоб інтегрувати Matplotlib , numpy та Python. А потім, якщо ви застрягли, продовжуйте пірнати глибше. Я рекомендую це замовлення, оскільки

  • це менш трудомістко
  • ви, ймовірно , не будете застосовувати кожен алгоритм, про який ви читали

1

Якщо ви розробляєте бізнес-програми (лише), знайдіть лише основи, такі як списки, черги, сортування, пошук рядків тощо, щоб ви дізналися термінологію, як впливає та вимірюється ефективність тощо. Краще використовувати свій час, щоб зосередитись на нових технологіях, моделях OO, ефективному дизайні бази даних, додатку. методології розвитку, і таке!


1

Гаразд - я знаю, що це не зовсім те, що ви мали на увазі, але ви вже знаєте (як це зробити) алгоритми. Залежно від вашого визначення, ви можете взяти кожну програму як приклад для алгоритму.

Тому не бійтеся. Корисно знати основні алгоритми, корисніше знати основні структури даних, але ще краще знати дизайн - «шаблони». Якщо всі основні алгоритми та структури даних будуть реалізовані у вашому обраному рамках, проте шаблони, швидше за все, не будуть ...


0

Вивчіть спочатку python, то якщо вам здається, ви можете вивчити алгоритми; Оскільки алгоритми не є питонними - вони загалом для всіх мов.


0

Перш ніж почати в університеті, я вважав, що я досить пристойний програміст, і мав пару років досвіду роботи. Але після того, як я дізнався про алгоритми та структури даних в університеті, я відчуваю, що ви повинні мати знання! Це важливо для всього, що ви робите. Незважаючи на те, що ви, можливо, не будете використовувати ці знання безпосередньо кожен день, вони все одно будуть у верхній частині голови, і це зробить вас кращим програмістом.

Ви багато дізнаєтесь про продуктивність, і навіть якщо продуктивність зазвичай не номер одна, знаючи алгоритми не дозволять вам робити якісь дурні речі з дуже поганою роботою. Незважаючи на те, що продуктивність не номер одна, немає жодних причин не використовувати ці знання для прийняття правильних рішень.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.