Perl과 Java의 유사점은 무엇입니까? [닫은]


14

나는 제 2 언어로 Java를 배우고 있다고 생각했습니다 (Perl 개발자입니다). 그러나 온라인 자습서를 조금만 읽으면 둘 사이의 유사점을 찾을 수 없습니다. Java를 배울 때 이해하기 쉬운 시간은 무엇입니까?


"이 언어를 좋아합니다!"를 결정하여 시작하십시오. 어려운 일이 생길 때마다 결정을 기억하고 많은 양의 이빨과 머리카락을 구하십시오.

1
권장 독서 : Gorilla vs. Shark

답변:


32

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의 위험에 대해 쓴 것처럼 남용 의 여지가 있습니다.


6
Perl과 비교할 때 Java는 고급 언어가 아닙니다. Perl 코드보다 더 많은 Java 코드가 작성됩니다.
tchrist

1
@tchrist 언어의 수준이 다른 언어보다 높거나 낮은 수준과 관련이있는 코드의 양은 무엇입니까?
yannis

1
@YannisRizos 대답하기가 매우 쉽습니다. 더 많은 코드가 필요하면 충분히 높은 추상화 계층을 처리하지 않는 것입니다. 눈부신 예는 Java의 dodgy 문자열 처리입니다. Java 7의 정규식 엔진을 제외하고는 추상적 인 유니 코드 코드 포인트의 고급 개념을 지원하지 않습니다. 이는 언어 Java가 Perl과 비교되는 저수준으로 인해 많은 어릴 키를 만듭니다.
tchrist

@tchrist이 용어의 주관성은 제정신 비교를위한 많은 공간을 허용하지 않으며, 선이 너무 흐리 며, 두 언어 모두 매우 다양한 기능을 가지고 있으며, 그 중 일부는 매우 높고 낮습니다. 그래서 나는 그들이 같은 수준에 있다고 생각하고 그것에 대해 많이 걱정하지 않을 것입니다. 나는 비슷한 대화를했다 여기에 언어를 비교하는 어떤 시간을 허비하지 나에게 영감을하는)
야 니스

@YannisRizos Perl에서 부족한 Java에서는 고급 개념을 찾을 수 없지만 Java에서 부족한 Perl에서는 많은 고급 개념을 찾을 수 있습니다. 따라서 Perl은 더 높은 레벨입니다. Perl에는 함수 포인터가 있습니다. 자바는 그렇지 않습니다. Perl은 연산자 오버로딩을 가지고 있습니다. 자바는 그렇지 않습니다. 펄은 결정 론적 소멸자를 가지고있다. 자바는 그렇지 않습니다. Perl은 리턴 유형별로 함수를 과부하시킬 수 있습니다. 자바는 할 수 없습니다. 나는이 길을 아주 오랫동안 갈 수있다. 물론 당신은 '기분'을 느끼지만, 어떤 이유로 든 당신을 가장 기쁘게합니다. 그러나 그것은 주관적인 분석 때문이 아닙니다.
tchrist

2

글쎄, 둘 다 C와 같은 구문-세미콜론, 중괄호 등을 사용합니다. 개인적으로 몇 년 전에 Perl에서 Java로 전환하려고 시도했을 때 가장 큰 문제는 객체 지향 프로그래밍이었습니다. 나는 Perl에서 몇 가지 물건을 개발했지만 명사의 왕국에서의 삶을 상상하기 위해 머리를 아프게했습니다.


@downvote 왜? (나는 대답에 너무 좋아하지 않고, 당신이 그렇게 문제가 무엇을 발견했는지 궁금합니다.)
Kyle Hodgson

1

현재 선택된 답변 때문에 두 가지의 차이점에 초점을 맞추고있는 것처럼 보이기 때문에 대체 답변을 찌르는 것 같습니다 (실제로 Perl과 Java 사이에는 많은 유사점이 없습니다).

유사점

  • 그들은 C와 비슷합니다 (루프와 괄호와 세미콜론이 있습니다)
  • 그들은 주로 필수적입니다
  • 컴파일 된 바이너리를 생성하지 않습니다
  • 그들은 매우 성숙
  • 둘 다 엔터프라이즈에서 전투 테스트를 거쳤습니다 (perl은 op 접착제로, Java는 애플리케이션 / 서비스로)
  • 그들은 둘 다 인기가 있습니다
  • 둘 다 객체 지향을 지원합니다
  • 둘 다 다양한 프레임 워크를 사용할 수 있습니다
  • 그들은 둘 다 그들에 관한 책을 출판했습니다
  • 둘 다 C / 어셈블리보다 높은 수준입니다
  • 둘 다 "느리게"(C / 조립품이 아닌 다양한 특정 시나리오의 경우)
  • 둘 다 자동으로 메모리를 관리합니다 ( "가비지 수집")
  • 2012 년 여름 기준으로 엉덩이가 시원하지도 않습니다.
  • 그들은 모두 오픈 소스 커뮤니티에 자리 잡고 있습니다
  • 그들은 많은 플랫폼에서 사용할 수 있습니다

Perl 코드가 매우 엄격하고 직교 (잘 테스트되고 잘 문서화되어 있고 Moose 또는 엄격한 객체 지향)를 사용하는 경우 Java가 매우 직교하고 표현 적이 지 않기 때문에 이러한 개념은 Java에 잘 적용됩니다.

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