나를 위해 나는 C #과 Java 사람입니다. 이 두 언어는 매우 유사하므로 서로 쉽게 교차 할 수 있습니다. 다른 언어를 사용하는 것이 좋은 생각인지 확실하지 않습니다. 이견있는 사람?
나를 위해 나는 C #과 Java 사람입니다. 이 두 언어는 매우 유사하므로 서로 쉽게 교차 할 수 있습니다. 다른 언어를 사용하는 것이 좋은 생각인지 확실하지 않습니다. 이견있는 사람?
답변:
언어를 배워야하는 다섯 가지 이유를 생각할 수 있으며, 결국 각 언어마다 하나씩 배워야 할 것 같습니다.
얼마나 많은 언어를 배우는 지에 관한 것이 아닙니다. 새로운 개념을 배우는 것입니다. 어떤 언어는 많은 개념을 가르쳐 줄 수 있지만 다른 언어는 하나만 가르 칠 수 있습니다.
C #을 알고 있다면 Java를 배우는 것만으로는 전혀 새로운 것을 배우지 못할 것입니다. 그러나 하스켈을 배운다면
따라서 배울 새로운 언어를 선택할 때는 아직 모르는 개념을 배울 수있는 것을 선택하십시오.
가장 중요한 것은 빨리 배우는 능력입니다. 그것은 다른 목적으로 사용되는 다른 언어를 아는 것이 중요하다고 말했습니다. 예를 들어
1) 스크립팅 언어 범주의 Python 및 Perl
2) "프레임 워크"언어 인 C ++
3) 모바일 애플리케이션 용 Java
4) 엄청난 양의 레거시 코드에 대한 C
5) 어렸을 때 사용했던 일부 오래된 언어 (기본, 파스칼, 클리퍼 등)
적어도 당신은 적어도 주요 언어와 스크립팅 언어 가 필요하다고 말하고 싶습니다 . C #을 알고 다음에는 Python, Perl 또는 Ruby를 배워야한다고 말하고 싶습니다. (나는 파이썬과 함께 갈 것이지만 그것은 선호의 문제 일뿐입니다).
매년 하나의 새로운 프로그래밍 언어를 배우는 것이 좋습니다. 그러나 이미 알고있는 것과 비슷한 것을 배우기보다는 스칼라 또는 F #과 같은 근본적으로 다른 것을 배우는 것이 좋습니다. 작업을 수행하고 프로그래밍 기술을 풍부하게하는 새로운 방법을 보여줍니다.
당신은해야 당신이 무슨 일을하는지에 대한 당신이 필요로하는 언어 사용에 집중 . 실제로 언어를 배우는 것은 실습에서 비롯되므로 언어를 연습 할 때 그 언어의 이점을 얻을 수 있습니다. 여가 시간에 새로운 언어를 배우려면 복잡성을 증가시키는 작업에서 언어를 구현하여 실제로 처리하십시오.
없음에 집중하십시오. 깨끗한 코드를 배우고 작성하는 데 집중하십시오. 명확하고 표현력 있고 단순하며 가장 중요하며 복제되지 않았습니다.
해당 프로그래밍 유형의 기본 원칙 (예 : OOP 캡슐화, 의미 및 의미)에 대해 알아보고 몇 가지 원칙을 배우십시오.
이 물건은 당신의 일을 더 쉽게 만들 것입니다. 이것은 당신과 함께 또는 당신과 함께 일하는 사람들이 더 쉽게 만들 것입니다.
나중에 구문도 잘 알아야합니다. 그러나 그것은 당신의 초점이 오래 걸리는 것이 아닙니다.
나중에 사용하는 기술도 잘 이해해야합니다. 비즈니스에 필요한 복잡성 수준에 따라 우선 순위를 지정할 수 있습니다.
마지막 두 개는 주요 초점이 아니라 일부 초점입니다
일을하는 데 필요한만큼.
그러나 C #과 Java는 영국 영어 및 미국 영어와 비슷합니다. 핀란드어 또는 나바호 어로 가면 새로운 것을 배울 수 있습니다 .
다른 언어를 충분히 이해하지 않고도 언어를 "외부에서"볼 수있는 언어를 완전히 이해하지 못한 채 언어를 숙달 할 수 있다고 생각하지 않습니다. 각각의 다른 언어는 다른 것을 테이블에 가져오고, 그 개념은 작업하는 주요 언어로 되돌릴 수있는 것입니다.
따라서 다른 언어를 사용하는 방법을 배우는 데 시간을 허비하지 않아도 상업적으로 사용할 계획은 아닙니다.
오래된 격언은 매년 언어를 배우는 것이며, 처음 10 년 동안 확실히 그렇게 할 필요가 있습니다. 어쩌면 이미 알고있는 것 중 일부를 더 깊이 탐구하거나 (몇 년 전에 배운 것들에 대한 지식을 업데이트하는 것) 새로운 언어를 끝없이 축적하는 것이 아니라 특정 라이브러리를 사용하는 것 중에서 선택할 수있을 것입니다. 다른 언어로 작업하여 프로그래밍 실습을 탐색하는 것은 프로그래머로서의 개발에 확실히 도움이됩니다.
C # 및 Java와 같은 인기있는 프로그래밍 언어를 사용하면 대부분의 장소를 능숙하게 사용할 수 있지만 문제를 해결하는 새로운 방법을 배우기에는 서로 다르지 않습니다. 나는 당신이 먹는 언어들 (직업을 위해 사용하는 언어들)과 다른 언어들이 있다고 생각합니다. 둘 다 목적이 있습니다.
새로운 프로그래밍 언어를 배우면서 문제를 해결하는 새롭고 더 우아한 방법도 배웠습니다. 그것은 언어의 수 또는 얼마나 자주 언어를 선택하는지에 관한 것이 아닙니다. 학습 할 가치가있는 각 프로그래밍 언어에는 고유 한 관점이 있으므로 새로운 사고 방식으로 문제에 접근해야합니다. 많은 경우 그 가치는 그러한 사고 방식을 배우는 데 있습니다.
스몰 토크와 함께 연주했는데 좋아했습니다. 언어는 함께 개발하는 즐거움이었습니다. 관용구에 익숙해지면 코드를 더 잘 표현하는 데 도움이됩니다. Java / C ++ / C #에서 정적 입력을 전혀 놓치지 않았습니다. 우리가 정적으로 타입이 지정된 언어로 우리와 함께 사는 제네릭은 실제로 정적 타이핑이 부과하는 한계를 해결하기 위해 구성됩니다.
나는 지금 일자리를 지불하지는 않지만 Ruby와 Ruby on Rails를 정기적으로 사용합니다. 루비의 디자인 원칙은 "프로그래머의 행복 향상"이었습니다. 당신은 그 정서를 사랑해야하며, 대부분 그것이 그것이 전달한다고 생각합니다.
결국 Java는 lisp와 Smalltalk의 길을 가고 C #은 그에 따라 갈 것입니다. 그들의 자리를 차지하기 위해 거기에있을 것은 여전히 남아 있습니다. 하루가 끝나면 문제를 해결하는 방법을 알고 있고 문제를 해결하고 해결하는 여러 가지 방법이 있다면 직업을 찾고 필요한 언어를 선택할 수 있습니다.
기술을 최신 상태로 유지하고 유연하게 유지하려면 6 개월마다 최소한 하나 이상의 완전히 새로운 프로그래밍 언어를 배우려고 노력해야한다고 생각합니다. 그리고 저는 매우 다른 언어를 의미합니다.
따라서 C # 또는 Java 프레임 워크를 사용하는 동안 더 많은 .net 프레임 워크를 배우면 유연함을 유지하는 데 도움이되지만 Haskell, Smalltalk, Scala, Clojure 또는 Ruby를 배우면 기술을 확장하고 다양한 방식으로 생각하는 데 도움이됩니다. Java가 언덕의 왕이 아닌 경우 계속 진행하는 데 도움이 될 수 있습니다.
C를 배운 적이 없다면 구문이 Java에 적용되었지만 사고 방식은 상당히 다를 수 있습니다. OO 코드가이 언어로 작성 될 수있는 방법을 이해하는 것은 깊이 있고 더 나은 방법으로 이해하는 것이 좋습니다.
Bruce Tate의 저서 인 "Beyond Java"를 읽는 것이 좋습니다.이 책은 C ++의 상승과 하락을 지적하면서 한 언어로만 발생할 수있는 위험 만 강조합니다. C ++은 아직 죽지 않았지만 수십 년이 남았지 만 다른 언어에서 생산성 향상으로 이익을 얻을 수없는 상황에서만 사용하는 것이 점점 더 제한되고 있습니다. 대조적으로, 루비 프레임 워크 인 Sinatra를 사용하면 약 6/7 줄의 코드로 간단한 웹 서비스를 구축 할 수 있습니다.
언어는 작업을 수행하기위한 도구입니다. 일부 언어는 일부 유형의 문제에 적합하고 다른 언어는 일반적으로 모든 종류의 문제 해결에 유용합니다. 새로운 언어가 나올 때 배우는 것이 좋습니다. 이번 달 유행하는 것에 집착하지 말고 그들이 할 수있는 일, 그들이 잘하는 일을 배우십시오. 나의 충고는 매년 1 개의 새로운 언어입니다. 그것들은 그것보다 빠르지 만, 당신은 새로운 도구를 도구 상자에 넣기를 원합니다.
언어의 차이점에 대해 이야기하는 한 에세이는 Paul Graham의 "Beating the Averages"입니다. 나는 그것을 읽는 것이 좋지만 한 가지 중요한 부분이 있습니다 (그는 "Blub"을 가상의 언어로 사용하여 좋아하는 언어가 무엇을 할 수 있는지에 대해 논쟁하지 않습니다) :
아니면 Perl 4는 어떻습니까? Perl 4와 Perl 5 사이에서 어휘 폐쇄가 언어에 추가되었습니다. 대부분의 Perl 해커들은 Perl 5가 Perl 4보다 강력하다는 데 동의 할 것입니다. 그러나 일단 당신이 그것을 인정하면, 한 가지 고급 언어가 다른 언어보다 강력 할 수 있다는 것을 인정합니다. 그리고 특별한 경우를 제외하고는 당신이 얻을 수있는 가장 강력한 것을 사용해야합니다.
그러나이 아이디어는 거의 결론에 도달하지 않습니다. 특정 나이 이후 프로그래머는 자발적으로 언어를 바꾸는 경우가 거의 없습니다. 사람들이 익숙한 언어가 무엇이든, 그들은 충분히 좋은 것으로 간주하는 경향이 있습니다.
{한조각}
우리의 가상 Blub 프로그래머가 전력 연속체를 내려다보고있는 한, 그는 아래를 내려다 본다는 것을 알고 있습니다. Blub보다 덜 강력한 언어는 그가 사용했던 일부 기능이 없기 때문에 분명히 덜 강력합니다. 그러나 우리의 가상 Blub 프로그래머가 힘의 연속체를 다른 방향으로 바라 볼 때, 그가 찾고 있다는 것을 깨닫지 못합니다. 그가 보는 것은 단지 이상한 언어 일뿐입니다. 그는 아마도 그것들을 Blub과 동등한 능력에 대해 고려할 것이지만, 다른 모든 털이 많은 것들도 마찬가지입니다. 그는 Blub에서 생각하기 때문에 Blub는 그에게 충분합니다.
그러나 전력 연속체보다 높은 언어를 사용하는 프로그래머의 관점으로 전환 할 때, 우리는 그가 Blub를 내려다 본다는 것을 알게됩니다. Blub에서 어떤 작업을 수행 할 수 있습니까? y조차 없습니다.
귀납적으로, 다양한 언어들 사이의 모든 힘의 차이를 볼 수있는 유일한 프로그래머는 가장 강력한 언어를 이해하는 사람들입니다. (이것은 아마도 Eric Raymond가 Lisp가 당신을 더 나은 프로그래머로 만드는 것에 대한 의미 일 것입니다.) Blub 역설 때문에 다른 사람들의 의견을 믿을 수는 없습니다. 그들이 프로그램에 대해 생각하는 방식.
http://www.paulgraham.com/avg.html
우리가 제공하는 대부분의 응용 프로그램은 C # 또는 VB로 작성되었습니다. 우리는 응용 프로그램에 스크립팅을 추가해야했을 때 Python을 선택했습니다 (Lua는 주자가 선택했습니다). 우리는 F #을 배우고 있습니다. 왜냐하면 C # / Java / VB가 아는 경우 설명하고 이해하기 어려운 털이 많은 새로운 일을 할 수 있기 때문입니다.
이것은 또 다른 전문가 대 일반론 논쟁이 될 수 있습니다. 어떤 사람들은 하나의 언어를 아주 깊이 이해하는 데 오랜 시간을 할애 할 수 있습니다. 다른 사람들은 자신에게 잘 맞는 다양한 언어에 대해 조금 알고 싶어 할 것입니다. 대부분의 사람들은이 두 극단 사이에 있습니다.
언어에 대한 제안을 살펴 보려면 몇 가지 아이디어가 있습니다.
함수형 프로그래밍-Haskell 또는 Lisp가 여기에 있으며 패러다임 전환은 어느 정도 헤드 터너 일 수 있습니다.
데이터베이스 별-PL / SQL 또는 T-SQL은 일부 기능을 위해 데이터베이스가 필요한 시스템으로 더 많은 백엔드 작업을 수행하려는 경우 유용 할 수 있습니다.
UI 웹 언어-ActionScript 또는 Javascript는 리치 인터넷 응용 프로그램에서 사용되는 언어의 예입니다. AIR은 일부 데스크톱 응용 프로그램에서 Twitter API를 사용하는 Twhirl과 같은 일부 경우 웹 호출을 사용하도록 할 수 있습니다.
이들은 단지 아이디어 일 뿐이며, 원하는 위치에 따라 유용하거나 쓸모가 없을 수 있습니다. 어떤 선택을 하든지 행운을 빕니다.
프로그래머는 C, 영어 및 다른 언어의 세 가지 언어를 알아야합니다.
C는 매우 핵심적인 언어이며 컴퓨터에 가깝고 여러 고급 언어에 공통적 인 구문 규칙이 있습니다. C는 데이터 구조와 같은 것을 Java와는 매우 다른 방식으로 생각하도록 강요합니다. 또한 Python과 Ruby vms는 모두 C로 빌드되어 있으며 속도를 높이고 싶을 때 C를 두 언어로 인라인 할 수 있습니다.
영어는 프로그래밍의 공통 언어입니다. 대부분의 책, 기술 보고서, 기술 웹 사이트 및 저널 용지는 영어로 먼저 나오고 때로는 영어로만 나옵니다. 또한 영어가 모국어가 아닌 경우 영어를 배우면 개념 조작을위한 툴킷이 확장됩니다 (물론 다른 언어를 배우는 영어 사용자도 마찬가지입니다).
다른 것은 절차 적이 지 않거나 정적으로 유형이 지정되지 않았거나 객체 지향적이거나 언어와 근본적으로 다른 언어이어야합니다. Haskell, Scala, Python, Ruby, Lisp 방언 등 .
그런 다음 C # 또는 Java와 같이 특정 상황에서 요구하는 내용을 알 수 있습니다.