Linux에서 시작하기위한 언어는 무엇입니까? [닫은]


19

Purdue에서 4 년 동안 정보 보안 학위를 시작하려고합니다. 학위는 프로그래밍 과정을 요구하지 않습니다. 그래서 내가 선택할 수있는 유일한 시간은 가끔 선택적인 것입니다. 그래서 대부분의 학습은 저 자신의 것입니다. 고등학교 졸업반에 저는 리눅스로 완전히 바꾸기로 결정했습니다. 지금까지 나는 리눅스와 보안에 관해 배우고있다. 그러나 나는 또한 몇 가지 프로그래밍 언어를 배우는 것이 중요하다고 생각합니다.

기본적으로 저는 Vim 사용법을 배우면서 나란히 프로그래밍하는 법을 배우려고합니다. 따라서 속도가 느릴 것입니다. 결국 나는 그만한 가치가 있다고 생각합니다. 내가 말했듯이, 나는 보안에 들어가기 때문에 대부분 보안 관련 응용 프로그램을 만들 것이며 대부분 네트워킹 관련 응용 프로그램을 만들 것입니다. 또한 Android 애플리케이션 개발을 시작하고 싶지만 나중에 나아갈 것입니다.

그것으로 나는 몇 가지 아이디어가 있다고 말했다. 나는 크로스 플랫폼이기 때문에 JavaScript로 시작하려고 생각하고 있었고 이전에 제안 된 것을 보았습니다. 루비에 대해 많이 들었거나 C를 사용하여 자연스러운 Linux 경로를 이용할 수 있습니다. 어떤 방향으로 가야합니까?

답변:


53

가장 먼저 : bash공통 명령 줄 유틸리티와 함께. Bash운영 체제에 대한 기본 사용자 인터페이스이며 Linux 시스템의 많은 프로그램이 특정 수준의 셸 스크립트로 래핑됩니다. 기발 할 수 있고 특유한 특징이 있으며 종종 멍청한 것처럼 보이지만 다루어야 할 일이므로 편안하게 사용하십시오. 표준 도구 좋아 grep, diff, head, tail, sort, uniq, 등, 쉘 스크립트로하지만, 명령 줄에서 사용자의 생산성뿐만 아니라 매우 도움이 될 것입니다.

적어도 일부를 배우십시오 c. 시스템의 최하위 레벨이 쓰여져 있으며 시스템 전체를 더 잘 이해할 수 있습니다.

원하는 고급 언어를 선택하십시오. Python, ruby, perl, java, 무엇이든 - 한 당신이 그것을 즐길 수있다. 여기에서 "프로그래밍"방법을 배우기 시작하는 곳이며, 여기서부터 더 많은 언어를 배우고 계속 배우는 것이 더 쉬울 것 입니다.


2
여기에 나열된 모든 사항에 동의합니다.
Joe

6
배쉬를 배우려면 awk, sed, head, tail, cut, tr, diff, grep, find, ps, netstat, tcpdump, sort, uniq 등 등에 대한 학습을 ​​포함시켜야합니다.
jftuga

2
@jftuga 합의. 내 툴킷의 상당 부분은 "데이터 추출 및 통합"을 수행하는 기술입니다. "형식화 된 텍스트 파일 조작"이라는 멋진 표현입니다. 파이프 라인을 이해하고 일반적인 도구를 알게되면 사전 롤링 된 소프트웨어의 워크 플로우에서 벗어날 수 있습니다. 또한 MS Powershell의 열렬한 팬이기도합니다 .MS Powershell은 여러면에서 Bash의 어깨에 서 있습니다.
AndyN

@jftuga-지적했다. 비록 이것이 중요하다고 생각하지만, 리눅스를 처음 접하는 사람은 sed / awk와 같은 큰 총을 배우는 것에 대해 걱정할 필요가 없다고 생각하지만, 기존 코드를 만나야 할 경우 해독 할 수있을 정도로 충분히 이해해야합니다 .
JimB

8
모두 동의하지만, 서버 관리 도구에서 가장 일반적인 고급 언어가 되었기 때문에 다른 언어보다 Python을 고급 언어로 권장합니다. 루비 또는 자바보다 훨씬 자주 실행됩니다. 펄은 너무 오래 되었기 때문에 일반적입니다. 그래서 다음에 선택하겠습니다.
tylerl

10

모든 사람들이 좋아하는 언어를 거의 추천한다는 것을 알게 될 것입니다. 내가 가장 좋아하는 언어는 Perl이므로 내가 추천하는 언어입니다. :) 그러나 개인적으로 선호하는 것 외에도 펄 사용을 고려해야하는 몇 가지 큰 이유가 있습니다.

첫째, 펄은 훌륭한 범용 언어입니다. 간단한 스크립트를 작성하여 파일을 조작하고 사용자 입력을 기반으로 의사 결정을하는 등 쉘 스크립트에서하는 것과 동일한 종류의 작업을 수행하여 펄에서 쉽게 시작할 수 있습니다. 이것은 프로그래밍의 일반적인 아이디어를 매우 쉽고 점진적으로 소개합니다. Perl은 꽤 오랫동안 사용되어 왔으므로 시작할 수있는 많은 리소스 (도서 및 웹 사이트)가 있습니다.

둘째, perl은 모든 최신 프로그래밍 기능을 지원하는 매우 강력하고 표현적인 언어입니다. 나는 그것을 15 년 이상 사용해 왔으며 여전히 더 효율적으로 일을하는 새로운 방법을 배우고 있습니다. 예를 들어, 객체 지향 프로그래밍을 탐색하고 싶다면 perl이 (특히 Moose를 통해 ) 그렇게 합니다.

셋째, perl은 공식 애드온 저장소 인 CPAN 의 거의 무한한 성능과 유연성을 제공합니다 . 예를 들어, 보안 소프트웨어 작성 아이디어를 따르기 위해 일종의 사용자 지정 네트워크 보안 스캐너를 개발하려고한다고 가정하십시오. 직접 작성하는 대신 NMAP :: Scanner 를 검색 엔진으로 사용하여 시작한 다음 그 위에 직접 조정 및 개선 사항을 작성할 수 있습니다.

마지막으로 웹 프로그래밍을 탐색하고 싶다면 Perl도 마찬가지입니다. Perl에서 웹 소프트웨어를 작성하는 인기있는 현대적인 방법 중 하나는 Catalyst로 , 모든 종류의 웹 응용 프로그램을 빠르게 개발할 수있는 최신 MVC 웹 프레임 워크를 제공합니다.

이 모든 것을 종합하면 perl의 장점은 작은 명령 줄 스크립트와 프로그램을 작게 작성하고 점차 모든 기능을 갖춘 최신 응용 프로그램을 작성할 수 있다는 것입니다. 물론이 유연성의 가격은 복잡합니다. 올바른 방식으로 일을 수행하는 방법을 연구하고 배우는 것은 전적으로 사용자에게 달려 있습니다. Perl은 다른 언어와 같은 모범 사례를 강요하지 않습니다. 저는 개인적으로이 자유를 좋아합니다. 특히 펄을 사용하는 방법을 배우기 위해 웹상의 모든 위대한 자료와 결합했습니다.


Perl은 (주로) 스크립팅 언어입니다. 그리고 대부분의 OS는 C로 프로그래밍됩니다.
Chris S

물론, 나는이 질문의 맥락에서 그다지 중요하지 않다고 생각합니다. OP가 OS 수준 프로그래밍에 대해 실제로 원하거나 배우고 싶어하는 것처럼 들리지 않습니다.
Phil Hollenback

Perl은 이미 이해하고있는 다른 언어 (종종 C)로 작성된 것을 대상으로하는 보안 앱용 코드를 작성하는 좋은 방법이라고 제안합니다. 따라서 이러한 차이점이 이해가된다면 Perl을 (완전히) 이해해야하는 언어가 아닌 사용 방법을 배우는 도구로 분류 할 것입니다.
BMDan

6

세 가지 언어가 당신을 대신하게 해줄 것입니다. 중요도가 감소함에 따라 첫 번째가 가장 중요합니다.

  1. 의사 코드 . 종종, 당신이 일하고있는 구현은 6 가지 언어와 도구의 융합체가 될 것입니다. 그러나 어떤 패턴이 구현되고 있는지 알고 있다면, 어떤 입력이 조각에 전달되는지, 어떤 출력이 어떤 출력을 제공해야하는지 파악하고 배제하여 테스트하고 그것이 깨지는 조각인지 알아낼 수 있습니다.
  2. C . 더 좋든 나쁘 든, 그것은 (Linux) 유니버스를 실행하는 것이기 때문에, 고급 언어가 실제로 무엇을하고 있는지 이해할 수있는 것들에 대한 면밀한 견해를 제공합니다 (예 : PHP) 참조에 의한 전달 또는 Java의 스레드 모델).
  3. C ++를 제외한 다른 것 . SQL과 같은 기능적 언어, 또는 더 나은 Haskell 또는 C-ey와 같은 기능 언어 – 다른 모든 방법이 실패 할 경우 Java는이 작업을 수행 할 수 있지만 여전히 매우 절차 적입니다. 아이디어는 전에 할 수 없었던 일과는 완전히 다른 무언가로 뇌를 감싸는 것입니다. 순전히 유틸리티 측면에서 bash는 아마도이 목록에 속할 수도 있지만 다른 기초가 없다면 실제로 bash 구문을 사용하여 C를 작성하는 것입니다.

1
의사 코드의 경우 +1 나는 의견에 의사 코드를 작성하고 그 의견에 코드를 작성하는 것을 좋아한다
sreimer

2
의사 코드 및 "C ++ 이외의 다른 것"의 경우 +1 리눅스 세계에서, 당신은 또는 script language같은 적어도 하나를 배워야 합니다. pythonPHP
yegle

2
의사 코드가 초보자에게 좋은 권장 사항인지 모르겠습니다. 의사 코드는 대부분의 c 스타일 언어를 학습 한 후에 이해할 수 있으므로 의사 코드 자체를 배우는 데 실제로 노력해야합니까? 말할 것도없이, 단일 의사 코드 구문은 없으므로 초보자를 혼동 할 수 있습니다.
JimB

@JimB : 요점은 언어에 상관없이 논리적으로 생각하는 법을 배우는 것입니다. ERD, UML 등은이를 수행하기위한 상아탑 도구이지만, 공식적인 것을 배울 필요는 없습니다. 아이디어는 당신의 생각을 도표화하고 그것을 예상 된 결과와 비교하는 법을 배우는 것입니다. 예를 들어, 데이터베이스에 요청의 일부로 웹 서버에 전송 된 HTTP 헤더를 알 수있는 (내재적) 방법이 데이터베이스에 없다는 것을 알면 변수를 고려하지 않아도됩니다. 마찬가지로 함수에 대한 의사 코드를 작성할 때 그렇지 않은 경우가 종종 발생합니다.
BMDan

나는 완전히 "의사 코드"를 초보자에게 가리키는 것이 공식적인 것이 아니기 때문에 혼란을 일으킬 것이라고 생각한다. 대부분의 사람들의 의사 코드는 가장 편한 c 스타일 언어와 일부 임시 구문의 융합이 될 것입니다.
JimB

4

여러 언어를 배워야합니다. 파이썬부터 시작하는 것이 좋습니다. 배우기 쉽고 매우 유용하기 때문에 널리 권장되며, 많은 우수한 자체 학습 자료를 무료로 이용할 수 있으며 IT 보안 전문가가 널리 사용합니다. 보안 전문가가 데모 코드를 게시하는 것을 볼 때마다 거의 파이썬입니다.


파이썬은 +1이며, 파이썬은 리눅스 세계에서만 인기있는 것은 아닙니다.
xiao

4

Purdue에서 4 년 동안 정보 보안 학위를 시작하려고합니다. 학위는 프로그래밍 과정을 요구하지 않습니다.

내가 OMG를 생각하는 유일한 사람인가 !!!! 이 지점에서?

또한 몇 가지 프로그래밍 언어를 배우는 것이 중요하다고 생각합니다.

나는 그렇게 말할 것입니다. 실제로 숙련 된 프로그래머가 될 것으로 기대하지는 않지만 공격을 시뮬레이션 / 재 작성하고 프로그래밍 프로세스의 작동 방식을 이해하는 데 필요한 기술이 필요할 수 있습니다. 또한 데이터를 분석하고 로그와 같은 대량 소스에서 정보를 추출 할 수있는 기술이 필요합니다. JimB는 bash에 대해 언급했습니다. 의심 할 여지없이 필수 비트를 배우는 데 몇 시간 정도 걸립니다. 실제로 bash를 볼 수있는 유일한 장소는 Linux 시스템에 있지만 다른 쉘은 매우 유사합니다.

데이터 크 런칭에 대해 awk 및 / 또는 Perl을 배우는 것이 좋습니다. 객체 지향 상자를 선택 해야하는 요구 사항에 신경 쓰지 마십시오. 비 절차 적 언어도 확인하는 것이 좋습니다.

학습 C는 또한 코드가 실행 가능한 프로그램으로 바뀌는 방법에 대한 많은 정보를 제공합니다 (컴파일은 매우 복잡한 프로세스의 한 단계 일뿐입니다).

안드로이드 / 모바일 개발에 관심이있는 사람에게는 분명한 선택은 java 일 것입니다. 그러나 java는 개발자가 운영 및 프로토콜의 현실을 다루지 않아도되도록 매우 열심히 노력합니다. 앱. 즉, 궁극적 인 목표를 달성하는 데 도움이 될 수 있으며 CV에서는 멋지게 보이지만 Java를 배우면 보안 지식을 보충 할 것으로 기대하지는 않습니다.


1
당신은 유일한 사람이 아닙니다. : -o
Keith

2

나의 충고:

  • bash(그리고 그 의미는) 범용 프로그래밍 언어가 아닙니다. 정교한 스크립팅을 수행하는 것이 가능하지만 bash일반적으로 프로그래밍을 배우는 가장 좋은 방법은 아닙니다. 다른 프로그램을 실행하고 데이터 파일과 디렉토리를 처리하며 입출력을 마샬링하는 시스템 관리 작업을 수행하는 가장 자연스러운 방법입니다. 경우 bash망치는 정말 손톱 모양을 문제를 보유하고 있습니다. 아무것도 아닌 사소한에서 할 배우는 것은 bash당신의 아주 작은 부분 집합을 배우면 훨씬 쉬울 것입니다 sedawk(이후의 문자열 조작 bash대부분이 "작은"언어와 유사한 작업의 구문에서 영감).
  • Linux에서 범용 프로그래밍을하려면 많은 열정적 인 주장을들을 수 있습니다. 가장 좋은 두 가지 경쟁자는 PerlPython 입니다. 이들은 매우 높은 수준의 스크립팅 언어로, 시스템의 모든 사용자 공간 프로세스에 액세스 할 수있는 거의 모든 작업을 수행 할 수있는 충분한 저수준 기능을 제공하며 사전 작성된 모듈 및 라이브러리의 방대한 모음을 제공합니다.

난 당신이 C에 입문 텍스트를 읽고 실행 시간을 보낼 것이 좋습니다 않는 straceltrace같은 몇 가지 간단한 유틸리티 명령에 명령을 ls하고 mkdir그리고 /bin/echo내가 좋을 것 등 (사실 요즘 ltrace -S대신에 strace두 명령에서와에 출력으로 만 진출 ltrace에 의해 증강으로 출력 -S옵션은) 매우 교육이 될 것입니다.

C는 Linux 커널과 GNU libc가 작성되는 기본 프로그래밍 언어입니다. (작은 부품이 조립되어 있습니다). Linux (또는 다른 UNIX 계열) 시스템의 거의 모든 프로그램은 C 라이브러리 (libc)에 연결됩니다. 주요 Perl 및 Python 인터프리터 (및 대부분의 다른 스크립팅 언어)도 C로 작성됩니다.이 프로그램 (커널, 공통 시스템 라이브러리 및 다양한 스크립팅 언어 인터프리터)은 모두 C 프로그래머가 작성합니다. 설계 및 기능은 크게 영향을받습니다. 기본 구현으로. 따라서이 중 하나에 대한 깊은 이해는 결국 C에 대한 이해를 수반합니다.이 레벨에서 프로그래밍을 이해하기 위해 C ++ 또는 Java에 대해 아무것도 알 필요가 없습니다. (직업 패치에 따라 각자 흥미롭고 필요할 수 있습니다.

따라서 지금까지 내 건물에 동의하면 펄과 파이썬 중 하나를 선택했습니다.

실제 화염 전쟁이 시작되는 곳입니다.

내 조언은 먼저 Python (2.x)에 초점을 맞추는 것입니다. 파이썬은 비교적 간단하고 일관된 구문을 가지고 있습니다. 몇 시간 만 에 파이썬 구문 의 기본 사항을 배울 수 있으며 이는 대부분의 구문입니다. 기본 구문에 주름이있는 몇 가지 기능 (목록 이해, 생성기 표현, 데코레이터) 만 있습니다. 따라서 파이썬을 배우려는 대부분의 노력은 광범위한 표준 라이브러리를 배우고이를 사용하는 "최상의"방법을 찾는 데 전념 할 것입니다 (그리고 프로그램을 강력하게 만들기 위해 처리 할 가치가있는 특정 예외 집합을 알아내는 것) 가장 중요한 것은 기본 개념을 배우는 것입니다.

파이썬의 광범위한 라이브러리와 비교적 간단한 구문에는 두 가지 뚜렷한 단점이 있다고 생각합니다.

첫째, 파이썬에서 매우 높은 수준의 일을하는 방법을 배우면 지루하기 위해 낮은 수준에서 일해야한다는 생각을 찾을 수 있습니다. 내가 일하는 곳 Perl이 표준입니다. 저는 펄에서보다 훨씬 빠르고 안정적으로 작업 할 수있는 파이썬으로 작업을 프로토 타이핑합니다. 그리고 나는 동료들을 위해 그것을 펄로 포팅하는 것을 두려워합니다. (Python을 사용하기 전에 Perl에서 상당히 훌륭했습니다. 따라서 간단한 친숙 함은 문제가되지 않습니다).

다른 단점은 파이썬에서 주어진 작업을 수행하는 최고 수준의 방법을 찾기가 어렵다는 것입니다. 예를 들어 웹 페이지를 가져 오려면 처음에는 낮은 수준의 소켓으로 시도해보십시오. 그러나 이미 urllib및 / 또는 urllib2모듈에 포함되어있는 상당히 많은 코드를 복제하고 있습니다 . 2.7.1 현재 표준 라이브러리에이 두 가지가 모두 포함되어 있다는 사실이 저의 지적입니다. 가능한 경우 파이썬 관리자는 오래된 모듈과 API를 투명하게 확장했습니다. 그러나 파이썬이 어떤 이유로 투명 확장이 불가능한 2 개 또는 3 개의 모듈을 보유하고있는 수십 가지 경우가 있습니다. (다른 예에서는 명령 줄 옵션을 구문 분석하는 옵션 argparseoptparse, 및getopt. getopt(가장 오래된 것)을 사용하여 프로그램을 작성하는 데는 거의 해가 없습니다 . 옵션이 적고 엄격한 호출 규칙 (예 : 소수의 사람들 만 사용)을 가진 매우 간단한 유틸리티의 경우 본질적으로 sys.argv자신 을 걷는 데 아무런 문제가 없습니다 . 그러나 일반적으로 문서를주의 깊게 읽고 사용 가능한 최신 또는 고급 기능을 설명하는 이전 또는 하위 모듈 하단에있는 링크를 따라가는 것이 좋습니다.

저의 조언은 당신이 더 깊은 개념에 초점을 맞추고 구문 및 언어 특정 문제에 많은 시간과 노력을 들일 필요가 없다는 의견에 근거합니다. 파이썬에 포함 된 서브 프로세스, 쓰레드 또는 멀티 프로세싱 기능을 언제 사용해야하는지 이해하는 것은 언어와 관계가 없으며 언어에 관계없이 프로그래밍 능력과 관련이 있습니다. (스레딩 및 멀티 프로세싱과 비교하여 Twisted의 이벤트 중심 모델에 대한 논쟁을 이해할 수있는 시점에서 아마도 파이썬을 마스터하고 모든 언어로 프로그래밍 할 준비가 된 것입니다).

Perl에 대한 반론은 간단하고 실용적입니다. 특히 Perl의 기술을 요구하는 작업이 상당히 많습니다. Perl은 강력한 언어이며 매우 광범위한 라이브러리를 가지고 있습니다. (대부분의 Linux 시스템과 함께 배포되는 Perl의 핵심은 표준 Python 라이브러리보다 작은 기능 범위를 포괄합니다. 배포판 또는 CPAN을 통해 상당수의 추가 패키지를 설치한다고 가정합니다.-포괄적 인 Perl Archive 회로망). (반면에 따로 따로 가져와야하는 Python 모듈과 패키지가 적습니다 .PyPI에서 사용할 수있는-Python 패키지 색인).

따라서 Perl을 배우면 단기적으로 작업, 특히 sysadmin 작업을 찾을 수 있습니다. 그러나 Perl의 구문은 ... 음 .. 일부 자체 애호가들에게는 "병리학 적으로 절충 적입니다!" Perl은 매우 간결 할 수 있으며 코드는 약간의 구두점으로 채워져 있습니다. 그것을 좋아하는 사람들은 그것이 "쉽고"완벽하다는 말을 끝없이 주장 할 것이며, 주어진 코드 조각이 어떻게 해석되었는지에 대한 혼란으로 가득 찬 포럼에서 끝없는 기회를 가질 것입니다. 문서와 공개 포럼에서이를 지원하는 사람들이 사용하는 구문과 언어는 학습을 위해 상당한 노력을 기울일 수있는 정도로 미묘한 차이가 있습니다.

이제,이 선행 논평은 주관적이고 편향되어 있습니다. Perl을 사용 해보고 직관적이고 유쾌한 구문을 찾을 수 있습니다. 그렇다면 더 많은 힘을 얻으십시오. 그러나 저는 개인적으로 Perl의 특질에 대한 이해가 매우 빠르게 붕괴되는 것을 발견했습니다. 기본 사항은 유지하지만 몇 줄 이상의 코드로 다시 전환해야 할 때마다 어려움을 겪습니다.

Java, Lisp 및 Scheme, TCL, Scala 등 공부할 다른 언어가 많이 있습니다. 그러나 유틸리티와 단순성 사이에서 최상의 균형을 제공하는 것으로 시작하는 것이 좋습니다.


1

Linux 세계에서는 두 가지 기본 사항을 알아야합니다.

  1. Regular Expression. 이것은 필수입니다. RegEx당신이 정규 표현을 사용하는 방법을 알고 나면 보편적 인 "언어"입니다, 당신의 인생은 훨씬 쉬워 질 것입니다 :-)
  2. " quick & dirty"는 Linux 세계에서 매우 일반적입니다. 솔루션이 아무리 추악하더라도 작업을 수행 할 수 있으면 작업이 완료된 것입니다.

리눅스에서 언어를 배우고 싶다면, 당신은 해야한다 을 선택 script language, 같은 python, PHP또는 심지어 bash scripting.

그리고 나의 추천은 PHP입니다. 간단하고 추악합니다. 자세한 온라인 설명서가 있습니다 . 좋은 RegEx지원이 있습니다. 그게 다야.


2
그것은 내가 들어 본 PHP에 대한 가장 좋은 설명이 될 것입니다 ... 인기
Gordon Gustafson

약간의 주제이지만, PHP가 인기를 얻는 주된 이유는 다른 언어의 많은 링커 라이브러리 / 패키지에 흩어져있는 많은 기능이 PHP의 표준입니다 (필요한 것들을 번들로 묶는 것과 비슷합니다) libc)
Phil Lello

1

거의 모든 언어로 거의 모든 작업을 수행 할 수 있으므로 해결하려는 문제에 따라 올바른 선택이 결정됩니다.

다음 범주의 언어를 아는 것이 좋습니다.

  • 컴파일 된 언어 (예 : C / C ++ / Java) C / C ++는 버퍼 오버 플로우, 스택 손상 등과 같은 보안 문제를 탐색하기에 좋은 장소입니다.
  • 해석 된 언어 (예 : PHP) 느슨하게 입력 된 변수의 문제점을 탐색하고 정의 할 수없는 함수를 호출 할 때까지 감지하지 않는 좋은 위치
  • 스크립팅 언어 (sh / bash / csh / ksh) 많은 유용한 쉘 유틸리티 (/ bin & / usr / bin 참조)를 함께 붙이는 데 정말 유용합니다

스택 손상과 직접 메모리 액세스를 허용하므로 C / C ++를 배우려고 노력합니다. 보안 문제를 실험하려는 경우에 중요합니다. 많은 언어가 C와 같은 구문 (JavaScript 포함)을 가지고 있으므로 좋은 발판입니다.

vim을 배우면서 쉘에서 많이 작업하고 있다면 쉘 기본 스크립트를 부작용으로 배우게 될 것입니다. 유닉스 파워 툴은 더 발전된 내용을 배우기에 좋은 책이었습니다. 아직 게시되었는지 모르겠습니다.

PHP는 배우기 좋은 언어 일 수도 있습니다. 새로운 프로그래머에게 제공하는 주요 이점은 링크해야 할 라이브러리 (복잡한 작업이 아님)가 아니라 많은 기능이 내장되어 있다는 것입니다. 이 때문에 주요 문서를 탐색하면 많은 것들 에 대해 가르쳐 줄 것입니다.


1

먼저 부정적인 조언이 있습니다.

기본적으로 내가 계획하고있는 것은 Vim 사용법을 배우면서 나란히 프로그래밍하는 법을 배우는 것입니다.

그거 하지마. 정말 편안한 편집기를 찾으십시오. 언어와 편집기를 모두 배우는 것은 순서대로 배우는 것보다 세 번 어렵습니다 (분명히 편집기가 먼저 가야합니다 :-))

내가 말했듯이 나는 보안에 들어가기 때문에 대부분 보안 관련 앱을 만들 것입니다. 대부분 네트워킹과 관련이 있습니다.

네트워킹 관련 보안 앱? C는 여기서 더 똑똑한 선택이 아닙니다. 시스템 API 수준에서 네트워크에 액세스해야하므로 C가 필요합니다. 물론 이것이 모든 것이 C에 있어야 함을 의미하지는 않습니다 .C 라이브러리 + $favorite-high-level-language래퍼는 C가 필요없는 부분에서 C 관련 번거 로움을 줄일 수 있습니다.

그것으로 나는 몇 가지 아이디어가 있다고 말했다. 나는 크로스 플랫폼이기 때문에 JavaScript로 시작하려고 생각하고 있었고 이전에 제안 된 것을 보았습니다.

나는 그것이 당신과 다른 맥락에서 제안 된 내기. JavaScript는 장점이 있지만 아직은 좋은 범용 언어는 아닙니다. JS에는 C, Python, Perl, Ruby, Java 및 회사에서 사용할 수있는 표준 라이브러리가 없습니다.

말하자면, $favorite-high-level-language내 충고는 파이썬과 함께하는 것입니다. C와 잘 어울리 며 유용한 라이브러리가 많이 있으며 추가 기능으로 사용할 수있는 라이브러리가 훨씬 많습니다.


0

Javascript를 배우는 데 전혀 문제가 없지만 브라우저에서만 실행되므로 프로그래밍이 웹 페이지 관련 앱으로 제한됩니다.

언어와 마찬가지로 '시작하기에 좋은 프로그래밍 언어는 무엇입니까'에 대한 답변이 많을 것입니다. 저의 가치는 기본 쉘 스크립팅으로 시작하는 것보다 더 나쁜 일을 할 수 있다는 것입니다. 쉘 이외의 것을 사용하지 않고 작업을 자동화하기 위해 할 수있는 작업을 본 다음 Perl 또는 그와 비슷한 언어를 사용하여 확장해야 할 일을 보았습니다. 셸이 수행 할 수있는 것보다 복잡한 작업을 수행 한 후 실제로 관심이있는 경우 몇 주 밖에 걸리지 않으며 C 또는 파생 제품을 사용하십시오.


3
브라우저에서만? 더 이상은 아닙니다 .
EEAA

고마워, 나는 서 있지만, 여전히 자바 스크립트를 학습 환경으로 추천하지 않을 것입니다. 초보자에게는 브라우저가 아닌 버전을 지원하는 것이 악몽 일 것입니다.
blankabout

2
나는 항상 ECMAScript가 프로그래밍 언어이고 Javascipt가 ECMAScript의 최상위에 위치하여 DOM 조작에 유용한 기능을 제공한다고 생각했습니다. 자바 스크립트는 브라우저 용입니다.
Jonathan Mayhak

0

내 추천? 흠. 글쎄, 당신은 당신이 갈 때 결정해야 할 수도 있습니다. 건전하고 균형 잡힌 범위의 경우 일반적인 CS 학위 경로를 따라갈 수 있습니다.

(1) C / C ++-Object Oriented 항목을 다운받을 수 있으며 최소한 시도해보아야합니다. C ++은 '프로페셔널'표준입니다. (2) 어셈블리 (조금만-프로세서, 메모리 등의 실제 작업을 이해하는 데 도움이됩니다-결혼 할 필요는 없습니다.) (3) Python / Perl / Bash-가져 오기 스크립팅 언어는 Linux (4) PHP / Ruby, MySQL 및 HTML 수준에 가장 유용합니다. 웹 프로그래밍을 시작하십시오! 또 다른 수준의 컴퓨팅 인 전체 서버-클라이언트 상호 작용 프로세스를 이해할 수 있습니다.

유용한 개념이 필요하십니까? 인공 지능, 신경망. 이것들은 당신을 반올림해야합니다.

이 중 하나를 선택하거나 모두 터치 할 수 있습니다. 내 언어? 모두 필요에 따라 1984 년부터 프로그래밍을 해왔으며 CS 학위, 필기 게임 및 모든 종류의 임베디드 시스템 앱을 보유하고 있습니다. 내가하는 일이야 자신이 누구이며 무엇을해야하는지 알아야합니다. 재미있게 지내십시오.

즐겨!


0

죄송합니다. 정보 시스템에 대한 정보 보안을 잘못 읽습니다.

자바

  1. 학위를받는 자바 기반의 엔트리 레벨 프로그래밍 과정이 있어야합니다. 당신이 배우는 것들에 대한 크레딧을 얻는 것이 항상 좋습니다.
  2. 그것은 당신이 엄격하게 시스템-사람이 아프거나 나중에 일하는 회사가 시스템이 토스트기와 같다고 결정하고 그것을 운영하는 사람들이라고 결정하면 경력 성장을 줄 것입니다.
  3. 객체 지향
  4. 당신은 당신이 안드로이드 개발을하고 싶다고 말했다. 그것은 Java를 의미 할 것입니다.

솔직히 리눅스에서 일하고 있고 Java로 시작하는 프로그래밍 과정을 수강 한 다음 몇 가지 프로그래밍 과정을 계속 진행하면 Bash sed / awk 등과 같은 다른 도구가 제자리에 있어야합니다. 실제로 시스템에 들어가면 나중에 C를 픽업 할 수는 있지만 수요가 많지 않다고 말하지 않을 것이며 실제로 내부에 있지 않는 한 시스템 전문가가 될 필요조차 없다고 말할 수도 없습니다.

YMMV

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