프로그래밍을 배울 때 미래를 대비하는 [폐쇄]


10

원한다면 '미래에 대비하여'프로그래밍하는 법을 배우고 싶습니다. Windows가 데스크톱 OS 마켓 플레이스 (현재)를 지배하고 있지만 분명히 언어 / 프레임 워크 / API 등을 배우는 데는 많은 가치가 있습니다. 새 장치가 등장하거나 Windows가 시작될 때마다 변경 될 수 있습니다. 친숙한 Windows 8 미리보기는 그리 매력적이지 않습니다 ...).

백엔드 로직 / 로우 레벨 프로그래밍 등에 대한 C / C ++에 대한 탄탄한 지식과 GUI와 같은 Java와 같은 매우 이식 가능한 언어와의 결합이 소프트웨어 개발의 좋은 기초가 될 것이라고 생각하고 싶습니까? 그것은 대부분의 시스템에서 유용 할 것입니까? -데스크탑 PC, 태블릿, 전화를 사용하고 있습니다.


11
그런 일은 없습니다
Job

굴을 만들고 책으로 채우십시오.
Edward Strange

4
굴을 만들고 통조림으로 채우십시오. 가장 미래 지향적 인 프로그래머는 묵시록 이후에 살아남은 프로그래머입니다.
Tom Anderson

1
프로그래밍 언어 나 코딩을 배우지 말고 대부분 프로그래밍을 배우십시오 . 거의 10 이 걸렸 으며 , 평생 학습을 계속해야합니다
Basile Starynkevitch

답변:


31

미래의 증거가되기를 원하는 경우, 내가 줄 수있는 최선의 조언은 자신을 기술에 포함시키지 않는 것입니다.

따라서 맹목적으로 API를 배우지 마십시오. 그들이 어떻게 생각되는지 배우십시오. 무대 뒤의 철학은 무엇입니까? 그들의 장점과 결함은 무엇입니까? 특정 기술이 아니라 일반적으로 소프트웨어를 생각하십시오.

또한 좋은 프로그램 개념에 대해 작업 할 수 있으며 OOP로 이동하면 AOP가 좋은 선택입니다. 그러나 메커니즘을 이해하지 말고 메커니즘의 철학을 연구하십시오.

데이터 구조 및 알고리즘과 같은 일반적인 컴퓨터 과학은 항상 유용한 기술 간 지식이므로 무시하지 마십시오.

또한 모범 사례를 따르십시오. 당신은 종종 무언가를 할 수있는 12 가지 방법을 가지고 있지만, 대부분 버그가 발생하기 쉽고, 유지하기가 어렵고, 나중에 이해하기가 어렵거나 다른 프로그래머가 이해하기 어렵습니다. . . 일반적으로 코드는 작성하는 것보다 읽기가 어렵습니다. 따라서보다 쉽게 ​​읽을 수 있도록 작성하는 데 약간의 노력을 기울이는 방법을 배우십시오 (쓰기보다 코드를 더 많이 읽을 수 있기 때문).

디버깅 (스마트 한 로그 및 디버거 사용) 및 테스트 (쉽게 테스트 할 수있는 코드 작성 방법 및 이러한 테스트 자동화 방법)에 대해 알아보십시오.

그런 다음 일반적인 기술 배경이 필요합니다. 프로세서 작동 방식 (캐시 미스 또는 브랜치 예측이 좋은 시작), UNIX 시스템, IP, TCP 및 이더넷과 같은 네트워크 프로토콜 등에 대한 매우 광범위한 지식에 대해 이야기하고 있습니다. . .

결국, 배우는 법을 배우십시오. 배우는 방법을 알고 있다면 적응할 수 있습니다.

직업을 찾을 수 있으려면 특정 기술에 대한 강력한 지식이 필요하지만 실제로 구식입니다 (예 : COBOL 또는 IE / Netscape 전쟁 당시의 웹 프로그래밍). 따라서 미래를 보장하는 데 의존하지 마십시오. 그들은 고용에 열쇠가 될 것이지만, 훌륭한 프로그래머를 만드는 것이 아니며 시간이 지남에 따라 기술을 내구성있게 만드는 것은 아닙니다.

편집 : 당신이 막 시작한다면, 당신은 결정적으로 무언가를해야합니다. 정말요 테트리스 나 뱀과 같은 게임은 좋은 시작과 재미입니다. 당신이 일을 끝내지 않으면, 당신은 배우는 데 많은 시간을 할애하고 실제로 배우는 것을 완전히 이해하는 데 필요한 경험을 얻지 못할 것입니다.

디자인 패턴으로 예제를 설정해 봅시다. 디자인 패턴은 훌륭하므로 반드시 사용해야합니다. 그러나 너무 많이 사용하면 코드가 복잡하고 이해하기 어려워집니다. 디자인 패턴이 무엇인지 완전히 이해하기 위해서는 디자인 패턴이 해결해야하는 문제에 직면하고 디자인 패턴이나 그 부작용을 해결하려는 데 시간을 허비해야합니다. 코드가 커질 때 시간이 지남에 따라 디자인 패턴을 작은 리팩토링으로 사용해야합니다. 또한 디자인 패턴의 이점이 사용으로 인한 코드 복잡성보다 클 때 디자인 패턴이 필요한시기를 알 수 있습니다. 이것은 경험이 필요합니다.

결정적으로, 일을 끝내십시오, 그들은 당신의 실수로부터 배웁니다. 좀 더 주장 할 수 없습니다 GET의 사항을 완료 !


좋은 ... 훌륭한 * 답변과 내가 이해하는 것-언급 한 각 주제가 아니라 '프로그래밍'이라는 주제를 전체적으로 이해해야한다는 점을 이해합니다. 전자 상거래 사이트를 잘 관리하는 롤을 가지고 있기 때문에 현장에서 일자리를 찾는 것에 대해 너무 걱정하지 않습니다. 프로그래밍에 대한 나의 관심은 진지한 취미로 분류하고 싶지만, 직장에서 다른 사람의 작업 흐름을 향상시키기 위해 그것을 사용하고 싶습니다.
익명

초보자의 관점에서보다 명확하게하기 위해 편집을 추가했습니다.
deadalnix 2016 년

4

좋은 프로그래머와 나쁜 프로그래머를 구분하는 것은 모든 언어로 프로그래밍하는 능력입니다. 다른 포스터에서 언급했듯이 중요한 객체 지향 언어를 아는 것은 훌륭한 프로그램을 만들고 수요가 많은 도구를 제공합니다.

또한 아직 학교에 있다면 글쓰기 수업을 들으십시오. 최고의 엔지니어와 프로그래머도 아이디어를 잘 전달합니다.

더 이상 사용되지 않는 것을 막기 위해 최선의 조치를 취하면 현재 추세를 따라 잡는 것입니다. 그들이 현재의 기술을 사용하지 않거나 끔찍한 과정 등을 겪고 있다면 다른 사람을 위해 일자리를 떠나는 것을 두려워하지 마십시오. 당신의 경력을 위해 할 수있는 최악의 일은 오래된 기술이나 약한 프로세스로 일하는 직업을 취하는 것입니다.


프로그래밍 개념에 대한 건전한 지식은 '이 게임에서'잘 갖추어야하지만 실제 언어 구문 / 표준 라이브러리에 대한 지식과 모든 언어 기능 (적절한 경우)을 활용하는 데 필수적인 것은 아님을 알고 있습니다. 불행히도 나는 아직 학교에 있지 않고 일하고 있습니다. 이전 의견에서 말했듯이 상당히 잘 지불되었으므로 그 측면에 대해 너무 걱정하지 않습니다. 답변 해주셔서 감사합니다. =)
익명

4

@deadalnix의 답변이 좋습니다. 나는 세 가지를 덧붙일 것입니다 :

  1. 재사용 가능한 정보는 극단적이 아닌 중간에서 나옵니다. Minsky는 그의 책 Society of Mind에서 이것을 자세히 설명하므로 다음과 같이 요약하겠습니다. 상위 레이어는 다음 문제에 적용하기에는 특정 솔루션에 너무 가깝고 하단 레이어는 너무 가깝습니다. 다음 문제에 적용 할 수있는 특정 플랫폼입니다. 중간 계층은 재사용 가능한 정보가있는 곳입니다. 알고리즘, 패턴, 분류법, 전술, 전략, 기술, 조직, 프로토콜 등 도메인 (상위 계층) 또는 플랫폼 (하단 계층)에 관계없이 유사한 문제를 해결하는 데 일반적으로 유용한 알고리즘 ). 참고 :이 계층은 3 계층 아키텍처와 아무 관련이 없으므로 여기서는 문제 공간 / 솔루션 공간 의미를 이야기합니다.
  2. 최소한 두 개의 인스턴스를 볼 때까지 공통 / 일반 / 재사용 가능한 것이 무엇인지 알 수 없습니다. 따라서 Windows가 내부적으로 어떻게 작동하는지 연구 한 다음 linux / unix가 내부적으로 어떻게 작동하는지 연구하고 두 가지를 비교하십시오. 일반적인 것은 재사용 할 수 있습니다. 다른 것은 디자인 결정이며 재사용 가능한 통찰력을 얻을 수도 있습니다.
  3. 주어진 상황이나 문제에 대해 솔루션을 구현하는 방법에 대해 생각한 다음 안락 의자 솔루션을 실제 솔루션과 비교하고 차이의 가능한 원인을 이해하려고 노력하십시오.

위대한 추가!
deadalnix 2018 년

2

당신이 처음에 있기 때문에, 나는 언어를 배우는 것이라고 말하고 싶습니다. 어떤 언어는 중요하지 않습니다. 어려움은 언어 (구문) 자체가 아니라 개념을 이해하는 데있다. 이러한 일반적인 프로그래밍 개념은 모든 프로그래밍 언어에 적용되므로 두 번째 및 세 번째 및 네 번째 (...) 언어 배우는 것이 훨씬 쉽습니다.

따라서 처음에는 '미래에 대비하는'것에 대해 너무 많이 생각하지 마십시오. 그러나 진행하면서 서로 매우 다른 언어에 능숙 해 지려고 노력하십시오. 기본적으로 (당신이 말했듯이) C / C ++과 같은 저급 (-ish) 언어, Java와 같은 고급 프로그래밍 언어 및 스크립팅 언어 (Python, Ruby 등)를 사용하면 편리합니다. 당신이 정말로 진보 된 것들에 들어가고 싶다면 당신도 어셈블리를 알아야합니다.

그러나 지금 당장 너무 자신을 강조하지 마십시오. 프로그램 학습에는 몇 년이 걸립니다. 현재 Java 또는 C #과 같은 언어를 선택하여 사용하십시오. :)


나는 '하나를 골라라'는 태도를 취하고 그것을 선호합니다. 아마도 그것을 채택 할 것입니다. 하나의 저수준 언어 (C), 하나의 고수준 (Java) 및 하나의 스크립팅 (Python) 언어를 고르면서 동시에 3 가지를 모두 배우는 것이 좋습니까?
익명

방금 프로그래밍을 시작하고 있습니까? 그런 다음 한 번에 두 개 이상의 언어를 배우지 마십시오. 혼란 스러울 수 있습니다. 처음에 배워야 할 것은 언어가 아니라 개념입니다. 필요할 때만 새 언어로 이동해야합니다. 예를 들어, 나는 최근에 스크립팅 언어로 갈 필요가 있다고 느꼈고, 이는 파이썬으로 게임을 스크립팅 할 수있게하기로 결정했기 때문입니다.
Paul

나는 단지 시작이라고 말하지 않을 것입니다. 수년 동안 html / css를 알고 있었지만 (실제로 자격이 없거나 관련이 없지만) 몇 달 동안 PHP / MySQL 웹 사이트를 구축했습니다. 웹 개발은 내가 할 수있는 소프트웨어 개발이다. 그래도 당신이하는 말에주의를 기울 이겠습니다.
익명

If you want to go into the really advanced stuff you must also know Assembly-모든 계층 에서이 작업을 수행 할 수 있으며 과제는 다릅니다.
sixtyfootersdude

1

백엔드 로직 / 로우 레벨 프로그래밍 등에 대한 C / C ++에 대한 탄탄한 지식과 GUI와 같은 Java와 같은 매우 이식 가능한 언어와의 결합이 소프트웨어 개발의 좋은 기초가 될 것이라고 생각하고 싶습니까? 그것은 대부분의 시스템에서 유용 할 것입니까?

데스크톱 PC, 태블릿, 전화를 사용하고 있습니다.

아닙니다. 그 어느 것도 도움이되지 않습니다.

특정 프로그래밍 언어와 무관하게 데이터 구조와 알고리즘에 대한 확실한 지식은 "저수준 프로그래밍 등"보다 더 중요합니다.

"Java와 같은 매우 이식 가능한 언어"는 C만큼 이식성이 뛰어나며 도움이되지 않습니다. 다음 큰 일이 당신의 슈퍼 휴대용 Java는 책임이 아닌 자산이 될 것이라는 점을 다음 언어에서 매우 다릅니다.

Mac OS (데스크톱, 태블릿 및 전화)는 모두 Objective C에서 수행됩니다. 시작하기에 좋은 곳일 수 있습니다.

Windows (데스크톱, 테이블 및 전화)는 모두 C #에서 수행됩니다. 그것은 시작하는 곳이 될 수 있습니다.


Java를 C와 휴대용 언어로 비교하고있었습니다 .Java는 각각 저수준과 고수준입니다. 내가 드리프트를 잡으면 내가 하나를 전문화하고 내 옵션을 차단하고 둘 다 '없음의 주인'이되고 싶지 않습니다. 나는 당신이 말하는 것을 고맙지 만 프로그래밍 언어에 대한 지식이없는 데이터 구조와 알고리즘에 대한 견고한 지식은 후자가없는 프로그래밍 언어에 대한 지식만큼 쓸모가 없습니다.
익명

@Chris Bridgett : 당신은 요점을 완전히 착각하고 있습니다. 보편적 인 기초가 있으며 프로그래밍 언어도 마찬가지입니다. 먼저 기초를 배우십시오. 그런 다음 케이크에 언어 (또는 OS)가 서리로 덥습니다. 기초는 케이크이며 미래를 보장합니다.
S.Lott
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.