실제 프로그래머가되기 위해 알고리즘을 배워야합니까? [닫은]


21

저는 PHP 프로그래머이며 지금까지 알고리즘을 배울 필요가 없었습니다 ...

이제 matplotlib를 사용해야하기 때문에 Python (실제 프로그래밍 언어)을 배우기 시작했습니다. 파이썬 알고리즘 책을 읽은 다음 matplotlib와 numpy를 배우는 것이 합리적입니까? 아니면 matplotlib와 numpy로 점프해야합니까?

친애하는,


2
알고리즘을 배우지 않고 주어진 작업에 가장 적합한 것을 이해하면이 질문에 대한 답변과 같은 답변으로 끝납니다. stackoverflow.com/questions/5498865
kdgregory

1
실제로 이름이나 그 뒤에 이론을 알지 못하고 이미 몇 가지 알고리즘을 구현했을 것입니다. 그것은 구현하지 않고 사람이 전혀 유용한 프로그래밍을 할 수있는 믿기 어려운 몇 가지 알고리즘을.
tdammers

2
알고리즘은 일을 최적방법으로 수행하는 방법에 대한 상식입니다 . 프로그래밍에서는 최소한의 리소스를 사용해야하고 성능을 보장해야하므로 항상 사용하고 있습니다. BTW, 이것이 파이썬 (실제 프로그래밍 언어)을 의미하는 것은 무엇 입니까 ??? PHP는 다른 것만 큼 좋습니다. 그것은 단지 웹 스크립팅 언어에 가깝고 당신을 염두에두고 오랜 시간 동안 비즈니스에서 최고입니다.
Pankaj Upadhyay

답변:


35

전혀. 알고리즘을 모른다면 프로그램이 어떻게 작동하는지 이해하는 방법은 무엇입니까?

보다 효율적으로 프로그래밍하고 더 나은 프로그램을 작성할 수 있도록 알고리즘 개발을 이해해야합니다. 시작하기 전에 최소한 제어 흐름 (상태 자동 장치를 통해 가능하지만 항상 필요한 것은 아님)과 같은 개념의 기본 사항과 Big O 표기법 및 성능에 미치는 영향에 대해 알아야합니다.


동의하지만, 두 번째로 도널드 크 누스 (Donald Knuth)가되기 위해 지역 커뮤니티 칼리지에서 알고리즘에 대한 소개를 전달하는 규모에 대해 얼마나 알아야합니까?
Job

좋은 오래된 큰 Ohno 표기법

1
알고리즘 복잡성 ( "big O notation")에 대한 지식의 중요성에 동의합니다. 그러나 나는 "실제 프로그래머가되기 위해 알고리즘을 배우는 것이 필수적이다"에 대한 "절대적으로"대답에 강력하게 동의하지 않는다. 사실 파이썬을 잘 배우는 것은리스트를 정렬하는 방법 (파이썬이 당신을 위해리스트를 정렬하기 때문에)이나 파이썬이 사전을 처리하는 방법 (파이썬 프로그래머가 해싱 메커니즘을 구현해야했던 것 등)을 아는 것보다 훨씬 유용합니다. 역사적으로 사람들은 학습 언어는 언어이기 때문에 즉시 사용할 수 없었습니다. 현대 시대는 다릅니다.
Eric O Lebigot

17

대답은 예와 아니오입니다. 다른 알고리즘의 작동 방식이나 그 뒤에있는 이론 (컴퓨터 과학자의 역할)에 대한 세부 정보를 알 필요는 없지만 특정 작업을 해결하는 데 사용할 수있는 알고리즘과 같은 기본 사항을 알아야합니다. 주어진 상황에 가장 적합한

당신의 경우에, 당신은 단순히 당신이 언급 한 라이브러리를 사용하기 시작할 수 있습니다. 다른 사람들이 더 쉽게 생활 할 수 있도록 누군가에 의해 만들어졌습니다. 그것을 사용하기 위해 알고리즘을 만들 필요는 없습니다.


2
그런 "현대"댓글에 +1. 학습 및 교육 알고리즘은 실제로 구현해야하는 사람들에게 예약되어야합니다.
Eric O Lebigot

6

예, 한 방법을 다른 방법에 적용하는 방법을 이해하십시오. 이미 작동하는 기존 알고리즘이 많으므로 "바퀴를 재발 명"하고 싶지 않습니다. 그들이 거기에 있는지 모른다면 잠재적으로 약한 솔루션을 발명하는 데 시간을 낭비하고 왜 약한 지 이해하지 못할 것입니다.


3

프로그래머의 알고리즘은 대장장이의 망치입니다. 물론 대안 없이도 작업을 수행 할 수 있지만 제대로 수행하고 올바르게 수행하려면 필수적입니다.

알고리즘의 장점은 프로그래밍 언어와 무관하므로 이론을 한 번 배우면 어떤 언어로든 구현할 수 있습니다. 다음은 제가 배우기 시작한 좋은 웹 사이트입니다. www.ambesty.com Java를 사용하지만 배울 코드 샘플이 함께 제공됩니다. 데이터 압축 알고리즘과 같은보다 복잡한 알고리즘에 간단한 ADT 및 정렬 알고리즘을 제공합니다. 매우 흥미로운 읽기. 행운을 빕니다


1

PHP 경험에 따라 한 언어에서 다른 언어로 기본 프로그래밍 개념을 조정할 수있는 단계에 있다면 그렇게하십시오 . 이것은 시간을 보내는 가장 효율적인 방법입니다.

Matplotlib , numpy 및 Python 을 통합하기 위해 수행해야 할 작업을 읽으십시오 . 그런 다음 막히면 계속 더 깊이 다이빙하십시오. 이 주문을 추천합니다

  • 시간이 덜 걸립니다
  • 당신은 아마 당신이에 대해 읽어 모든 알고리즘을 적용하지 않습니다

1

비즈니스 응용 프로그램을 개발하는 경우 (전용) 목록, 대기열, 정렬, 문자열 검색 등과 같은 기본 사항 만 배우면 용어, 성능에 미치는 영향 및 측정 방법 등을 배울 수 있습니다. 시간을 더 잘 사용하려면 새로운 기술, OO 패턴, 효과적인 데이터베이스 디자인, 앱에 중점을 두어야합니다. 개발 방법론 등!


1

Ok-이것이 정확히 당신이 의미하는 것은 아니라는 것을 알고 있지만 알고리즘은 이미 알고 있습니다. 정의에 따라 알고리즘의 예로 모든 프로그램을 사용할 수 있습니다.

그러니 두려워하지 마십시오. 기본 알고리즘을 아는 것이 유용하고, 기본 데이터 구조를 아는 것이 더 유용하지만 디자인 "패턴"을 아는 것이 더 좋습니다. 결국 기본 알고리즘과 데이터 구조는 선택한 프레임 워크에서 구현되지만 패턴은 그렇지 않을 것입니다 ...


0

파이썬을 먼저 배우고 나서 생각이 든다면 알고리즘을 연구 할 수 있습니다. 알고리즘은 파이썬 고유가 아니기 때문에 일반적으로 모든 언어입니다.


0

대학을 시작하기 전에 저는 꽤 괜찮은 프로그래머라고 믿었고 2 년 동안 일한 경험이있었습니다. 그러나 대학의 알고리즘과 데이터 구조에 대해 배운 후에는 이것이 당신이 알아야 할 지식이라고 생각합니다! 당신이하는 모든 일에 필수적입니다. 매일 그 지식을 직접 사용하지 않더라도, 그것은 여전히 ​​당신의 머리 꼭대기에 있으며 더 나은 프로그래머가 될 것입니다.

성능에 대해 많은 것을 배우고 성능이 일반적으로 최고는 아니지만 알고리즘을 알면 실제로 성능이 좋지 않은 바보 같은 일을 할 수 없습니다. 성능이 최고는 아니지만 올바른 결정을 내리기 위해 해당 지식을 사용하지 않는 이유는 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.