나는 제 2 언어로 Java를 배우고 있다고 생각했습니다 (Perl 개발자입니다). 그러나 온라인 자습서를 조금만 읽으면 둘 사이의 유사점을 찾을 수 없습니다. Java를 배울 때 이해하기 쉬운 시간은 무엇입니까?
나는 제 2 언어로 Java를 배우고 있다고 생각했습니다 (Perl 개발자입니다). 그러나 온라인 자습서를 조금만 읽으면 둘 사이의 유사점을 찾을 수 없습니다. Java를 배울 때 이해하기 쉬운 시간은 무엇입니까?
답변:
Perl은 고급 범용 범용 패러다임 해석 동적 프로그래밍 언어입니다. 자바는 높은 수준의 범용이며, 대부분 단일 패러다임, 정적으로 입력 된 프로그래밍 언어.
따라서 둘 다 높은 수준입니다 .
고급 프로그래밍 언어는 컴퓨터의 세부 사항을 강력하게 추상화 한 프로그래밍 언어입니다.
그리고 범용 :
컴퓨터 소프트웨어에서 범용 프로그래밍 언어 (GPL)는 다양한 응용 분야에서 소프트웨어를 작성하는 데 사용되도록 설계된 프로그래밍 언어입니다.
본질적으로 이것은 Perl로 할 수있는 모든 것을 Java로 할 수 있다는 것을 의미합니다. 그리고 @KyleHodgson이 언급 했듯이 , 그들의 구문은 C와 C ++에서 파생되었으며, for
루프와 if
명령문 과 같은 간단한 것들에 대한 구문 은 본질적으로 동일하며 @DipanMehta 노트 와 같이 둘 다 가비지 수집 됩니다. 물론 둘 다 매우 인기가 있고 활기찬 커뮤니티가 있습니다.
그러나 그것이 유사성이 멈추는 곳입니다. Perl은 다양한 패러다임으로 다양한 프로그래밍 패러다임을 지원합니다.
Perl은 하나의 단일 패러다임을 장려하지 않으며, 본질적으로 동일하며, 단일 패러다임으로 제한하지 않고, 건물에 관계없이 가장 적합한 것으로 생각하는 것을 자유롭게 선택할 수 있습니다. 반면에 Java는 대부분 클래스 기반 객체 지향 언어입니다. 일반 프로그래밍에 대한 지원이 있지만 초보자는 Java를 엄격하게 클래스 기반 객체 지향 언어로 생각해야합니다.
그래서 펄 코드를 구조화하는 하나 이상의 방법으로 할 수 있습니다 1 , 자바 반면 하나. 그것은 나쁜 것이 아니며 좋은 것입니다. 객체 지향 Perl 코드를 작성하지 않은 경우 Java는 처음에는 약간 외계인처럼 보일 수 있습니다. 낙심하지 마십시오. 객체 지향은 소프트웨어 개발 경력을 고려하고 있다면 궁극적으로 배워야 할 것입니다 .Java를 배우는 것이 완벽한 방법은 아니지만 객체 지향의 기본 개념을 배우는 좋은 방법입니다. 확실히 좋은 방법입니다.
그리고 아시다시피, Perl은 해석되는 반면 Java는 완전히 다른 짐승 입니다. Java에서는 Perl에서와 같이 코드를 작성한 다음 컴파일합니다 . 결과는 실행 파일이 아니라 Java bytecode 입니다. 이 intermediatery 형식은에 (마지막!) 실행되는 자바 가상 머신 이다, 다소 펄 인터프리터와 유사합니다. Java 프로그램을 실행하려면 Perl 스크립트를 실행하기 위해 Perl 인터프리터를 설치하는 방법에 대해 미리 JVM을 설치해야합니다 2 .
Perl 배경에서 오는 가장 기억해야 할 것은 바이트 코드 단계 컴파일입니다. Java 소스 파일을 변경할 때마다 다시 컴파일해야합니다. 처음에는 미친 소리로 들릴 수 있지만 컴파일은 매우 좋은 결과를 낳습니다.이 단계에서 코드에 다양한 오류가 있는지 확인하고 컴파일러는 프로세스가있는 경우 프로세스를 끝내기를 거부하고 때로는 오류를 찾아내는 데 도움이됩니다 유용한 메시지 (항상 메시지가 있지만 때로는 도움이되는 메시지 만 있음)
마지막 주요 차이점은 다음과 같습니다.
펄은 다이나믹 3 :
동적 프로그래밍 언어는 컴퓨터 과학에서 광범위하게 사용되는 용어로, 런타임시 다른 언어가 컴파일 중에 수행 할 수있는 많은 일반적인 동작을 런타임에 실행하는 고급 프로그래밍 언어 클래스를 설명합니다. 이러한 동작에는 프로그램 실행 중 프로그램 확장, 새 코드 추가, 객체 및 정의 확장 또는 유형 시스템 수정 등이 포함될 수 있습니다.
그리고 동적으로 입력 된 4 :
프로그래밍 언어는 대부분의 유형 검사가 컴파일 타임이 아닌 런타임에 수행 될 때 동적으로 유형이 지정됩니다.
Java는 정적으로 유형이 지정됩니다 .
프로그래밍 언어는 런타임과 달리 컴파일 타임 동안 유형 검사가 수행 될 때 정적 타이핑을 사용한다고합니다.
가능한 한 간단하게 말하면 Java에서 변수 및 메소드의 유형을 사용하기 전에 선언해야 함을 의미합니다. 다른 차이점이 있지만 직접 발견하는 재미를 망치고 싶지는 않습니다. :)
그리고 마지막으로 매우 중요한 차이점이 있습니다. Java는 학계 5 와 기업 세계 의 연인 언어이며, 더 이상 학업 환경에서 (Perl을 처음 만난 곳에서는) Perl을 거의 만나지 않으며, 경력 관점이 축소되고 있습니다. (여전히 많은 작업이 있지만 Java, .Net 언어 또는 PHP만큼 많은 곳은 없습니다.) 나는 그 이유에 대해서는 언급하지 않을 것이고, 나는 단지 슬픈 사실을 말하고 있습니다. 아직 어리기 때문에 Java를 배우면 해당 경로를 따르기로 선택하면 컴퓨터 과학 학위를 조금 더 준비 할 수 있습니다.
물론 Perl을 포기하지 말고 Java를 탐색하십시오. 그것들이 비슷한 것보다 더 다르다는 사실은 또한 당신이 상당히 다른 접근법과 프로그래밍 정신을 배우는 것을 의미합니다. 어려운 길이지만 궁극적으로 당신을 더 나은 프로그래머로 만들 것입니다.
1 "팀 투디"
2 Perl 커뮤니티는 Parrot을 통해 Perl 가상 머신의 가능성을 적극적으로 탐색하고 있습니다.
3 동적은 항상 동적으로 입력되는 것을 의미하지는 않습니다.
4 Perl은 사용자 정의 유형에 대해 동적으로 유형이 지정되고, 배열, 해시, 스칼라 및 서브 루틴을 구별하는 것과 관련하여 정적으로 유형이 지정되고를 통해 강력하게 유형이 지정 use strict
되므로 본질적으로 변수 유형 시스템 언어이지만, 약간의 건전성을 유지하기 위해 동적으로 호출하겠습니다. 입력했습니다.
5 Joel Spolsky 가 JavaSchools의 위험에 대해 쓴 것처럼 남용 의 여지가 있습니다.
글쎄, 둘 다 C와 같은 구문-세미콜론, 중괄호 등을 사용합니다. 개인적으로 몇 년 전에 Perl에서 Java로 전환하려고 시도했을 때 가장 큰 문제는 객체 지향 프로그래밍이었습니다. 나는 Perl에서 몇 가지 물건을 개발했지만 명사의 왕국에서의 삶을 상상하기 위해 머리를 아프게했습니다.
현재 선택된 답변 때문에 두 가지의 차이점에 초점을 맞추고있는 것처럼 보이기 때문에 대체 답변을 찌르는 것 같습니다 (실제로 Perl과 Java 사이에는 많은 유사점이 없습니다).
Perl 코드가 매우 엄격하고 직교 (잘 테스트되고 잘 문서화되어 있고 Moose 또는 엄격한 객체 지향)를 사용하는 경우 Java가 매우 직교하고 표현 적이 지 않기 때문에 이러한 개념은 Java에 잘 적용됩니다.