어떤 프로그래밍 언어 패러다임이 어떤 직업에 맞습니까?

StackOverflow https://stackoverflow.com/questions/188934

  •  06-07-2019
  •  | 
  •  

문제

내가 아는 한 (많이 인정하지는 않음), 현재 인기있는 프로그래밍 패러다임은 대상 지향 (Java, C#, Ruby) 대 기능 (F#)입니다. 첫 번째 패러다임에 주로 익숙한 사람으로서 몇 가지 질문이 있습니다.

  • 프로그래머는 단순히 하나의 패러다임을 자신의 삶을 고수 할 수 있습니까? 즉, 하나의 망치에 대한 모든 문제를 손톱으로 줄일 수 있습니까?
  • 그렇지 않다면 어떤 도구가 어떤 유형의 작업에 적합합니까? 예를 들어 : 웹 기반 vs 데스크탑, 아름답고 반응이 좋은 인터페이스 생성, 빠르게 데이터를 크 런치 할 수있는 등.
  • 사람들이 새로운 패러다임을 배워야했던 적이 있습니까? 지난 두 가지 일자리의 경우 직장에는 Java와 C#이 필요했습니다. 비고 언어를 구체적으로 사용하는 작업장이 있습니까?

분명히 "최고의"언어는 없지만 새로운 패러다임을 배우는 데 시간과 에너지의 투자가 가치가 있는지 궁금합니다. 미리 감사드립니다!

도움이 되었습니까?

해결책

"또는 즉, 모든 문제를 하나의 망치의 손톱으로 줄일 수 있습니까?" 예. 기간. 당신이 가질 가능성이있는 모든 프로그래밍 언어는 다른 모든 것만 큼 완전합니다. 실제로 프로그래밍 언어에 대한 "완전성"에 대한 공식적인 정의가 있습니다.

"사람들이 새로운 패러다임을 배워야 할 필요가 있습니까?" 언제나.

실제로 "패러다임 변화"의 기복을 따르는 트릭이 있습니다. 내 경력의 지난 30 년 동안, 나는 프로그래밍이 비교적 단순한 명령/절차 모델에서 프로세스와 데이터 사이의 균형이 향상된 수많은 풍부한 모델로 성장한 것을 보았다.

나는 다음을 발견했다 ...

원동력의 일부는 인공 지능 커뮤니티입니다. 이러한 "새로운 모델"중 다수는 AI 지식 표현 체계로 시작되었습니다. 그들은 그곳에서 견인력을 얻었고, 더 많은 주류 응용 프로그램에 속했다.

엔티티 관계 모델은 원래 비즈니스 거래가 아닌 지식 표현을위한 것입니다. 마찬가지로 객체 모델은 지식 표현을위한 것이 었습니다. 그런 다음 시뮬레이션 사람들이 찾았습니다. 이제 우리의 나머지는 그것을 가지고 있습니다.

여기 내 결론이 있습니다.

소프트웨어는 지식 표현입니다.

패러다임이나 모델 또는 접근 방식 또는 스타일의 선택은 다음 질문에 대한 답을 기반으로합니다.

"이 문제를 어떻게 가장 잘 표현할 수 있습니까?"

문제에 객체와 관계가있는 경우 oo. 문제에 알고리즘과 변환,지도, 필터 및 감소, 기능이있는 경우 기능. 문제가 역동적이고 변화하며 유연하며 역동적 인 경우. 문제가 정적이고 빠르게 확장되는 경우 정적입니다.

다른 팁

대체 패러다임 (OO, 기능적, 절차 적, 역학 등)은 다른 방식으로 문제를 생각하는 데 도움이되기 때문에 학습 할 가치가 있습니다.

예를 들어, 선형 방식 (내가 한 첫 번째 방법)과 재귀 사용에 대한 트리 트래버스 해결의 차이에 대해 생각해보십시오. 또는 Google의 MAP 조합과 인터넷을 색인화하는 데 도움이됩니다.

오래된 문제에 적용되는 새로운 방법은 가장 어려운 문제를 해결하는 데 도움이 될 수 있습니다.

패러다임은 언어와 무관합니다. C로 OO 스타일로 개발할 수 있습니다 (GTK를 살펴보십시오). Java로 프로그램 할 때 주로 기능적 스타일을 사용합니다.

가능한 한 많은 패러다임을 아는 것이 좋습니다. 일부 문제는 하나의 패러다임에서 해결하기 위해 사소한 일이며 다른 패러다임에서 섬세한 제작이 필요합니다.

(사소한) 예로서,이 페이지에서 Java 및 OCAML 또는 더 나은 Haskell의 QuickSort 구현을 비교하십시오. http://www.rosettacode.org/rosettacode/w/index.php?title=quicksort

(이것은 기능이 더 좋다는 것을 의미하지 않습니다. OO로 더 잘 해결 된 문제가 있습니다).

하나의 망치에 대한 모든 문제를 손톱으로 줄일 수 있습니까?

오류 예. 하나의 망치로 문제를 해결할 수 있습니다. 그 문은 그 문을 반으로 보는 것이 훨씬 더 오래 걸립니다.

사람들이 새로운 패러다임을 배워야했던 적이 있습니까? 지난 두 가지 일자리의 경우 직장에는 Java와 C#이 필요했습니다. 비고 언어를 구체적으로 사용하는 작업장이 있습니까?

개발자는 15-20 년마다이 작업을 수행해야합니다.

절차 VBA로 작성된 액세스 기반 시스템을 갖춘 소규모 회사의 전체 산업이 있습니다. (그리고 나는 그들 대부분을 위해 일했다고 생각합니다). 클래식 ASP 개발자는 ASP.NET을 배워야합니다. Perl 개발자는 Python을 배우고 있습니다. 배치 중심 개발은 이벤트 중심 개발에 이르렀습니다.

나는 당신이 이사회 전체에서 답을 찾을 것이라고 생각합니다. 더 많이 일할수록 다른 사람들을 아는 것이 "도움이된다"는 것을 알 수 있습니다. C#/VB/SQL Server 개발자로서 F#과 다른 언어에 대해 조금 배우는 것이 더 도움이된다는 것을 알게되었습니다.

The dynamic stuff scares the crap out of me, but Ruby on Rails is by far the best development system I've seen for web stuff. I don't feel comfortable with using it for a really big, heavy maintenance project though because it's too easy to alter the meaning of existing, compiled, finished code. Also too easy for one person's coding style to make it into a new language.

Dynamic/scripting is also good to know for system admins and anyone who runs a Linux system. Writing a quick script in BASH or Ruby beats the HELL out of trying to implement the same functionality in Java, or C++.

OO makes it much easier to understand large amounts of code. If you have a large team or multiple large teams and need to give an overview quickly, OO makes it much easier to describe and to isolate a given piece of functionality. I should say CORRECTLY CODED OO!

I understand functional is good for multi-threaded programming since everything tends to be immutable.

OOP를 염두에두고 설계 및 건축 기술을 개발하는 것은 훌륭한 언어 불가지론 경력에 가장 바람직한 기술입니다.

oops에서 코딩 할 때의 Benifit은 다른 팀원과 조직 전체를위한 것입니다. 코드는 모두에게 이해할 수 있고 개발자가 직무를 종료하면 회사는 걱정할 필요가 없습니다. 다른 경우 기능적 스타일을 따르는 경우 다른 사람들이 자신이 한 일을 이해하기가 정말 어렵습니다.

대부분의 다른 사람들이 말했듯이, 일반적으로 모든 언어를 사용하여 문제를 해결할 수 있으며 일반적으로 한 패러다임의 스타일로 다른 패러다임을 쓸 수 있습니다.

다른 패러다임을 의도 한대로 사용하는 법을 배우는 데 시간이 걸리면 미래에 사용하는 패러다임에 도움이 될 수있는 지식 표현과 문제 해결에 대해 다른 것들을 배웁니다.

패러다임과 도메인간에 약간의 정렬이 있지만 일반적으로 소프트웨어가 작동 해야하는 환경의 세부 사항에 따라 언어를 선택하는 것이 가장 좋습니다.

  • 여러 데스크탑 플랫폼에서 실행해야합니까?
  • 데스크탑 응용 프로그램이라면 네이티브 모양과 느낌이 필요합니까?
  • 디자인의 빠른 반복이 중요합니다
  • 어떻게 유지해야합니까?
  • 어떤 제 3 자 시스템을 사용해야합니까?
  • 기존 프로그래머 지식 / 기술 / 선호도.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top