OOP 언어를 어떻게 익혀야하는것인가요?

gurumong의 이미지

처음 제대로 배운 언어가 C언어라서 그런지
OOP언어를 잠깐 배우고 다른 소스를 분석하는데 괭장히 힘들어 하고있습니다

객체 변수를 선언하는것만으로 뭔가 제가 알수없는 동작이 일어난다는것이 모호한것같고
어떤 코드의 일부를 보더라도 선언하고 대입하고 메소드 호출하는 등의 간단한 몇줄인데
그것의 내부를 이해하려면 굉장히 헤메면서 찾아다녀야하는것 같고 그렇거든요 ㅜ.ㅜ

제가 문법적인 면이 약해서 그런것일까요?
java와 c++을 제대로 배워서 사용하고 싶은데 굉장히 힘듭니다 ㅜ.ㅜ
어떻게 하면 OOP언어를 잘 이해하고 배울수있는지 조언좀 부탁드립니다
(__)

paxbug의 이미지

C랑 별로 다를게 없다는 믿음으로 소스 마구 분석해 들어갔었습니다.
그러다, 최근에 Ruby를 보면서 이게 객체지향의 정수리구나 라고 생각했었고,
Object-C를 보면서 아주 혼란을 많이 격고 있습니다.
그러다, VC++ 보면서 템플릿과 다중상속의 응용 속에서 개체지향의 기본이 절실함을 새삼 느꼈습니다.
"C++ 구현한 자료구조" 이런류의 책도 가볍게 이론을 강화시킬수 있습니다.

ahsan의 이미지

이 책을 독파하면 JAVA는 거저먹기 같아요.
몇개의 키워드와 개념이 추가되었을 뿐 기본적인 것은 같아서 그냥 책을 읽으면 다 이해가 됩니다.
요즘 Ruby 책도 보고 있는데 C++과 JAVA 개념이 바탕이 되어서인지 읽는데로 바로 이해가 되더군요.
아직 초보자라 감히 뭐라 언급하기는 그렇지만 Ruby는 정말로 놀라운 언어 같습니다.
명쾌한 표현과 놀라운 표현의 절재를 보면 마치 일본 시의 아이꾸를 읽는 듯한 느낌입니다.
Ruby를 개발한 사람은 아마 천재일것 같습니다. 천재가 분명해요.

C는 무조건 언어를 배워야 한다는 의무감에서 6개월 이상을 하드트레이닝으로 고생해서 조금 이해하는 수준입니다.
그러다보니 그리 재미있게 배웠다는 생각이 없습니다.
C++은 호기심에서 시작하였는데 엄청 재미있더군요.
현대프로그래밍언어 대부분의 개념을 C++에서 찾을 수 있는것 같습니다.
저의 입장에서 JAVA는 마치 C++을 이용해서 개발한 라이브러리를 사용하는 느낌이었습니다.
별로 감동이 없었음.

나를 감동시킨 언어 C++과 Ruby

obbaya의 이미지

스몰토크 e-book 한 권을 가볍게 통독해보시는 것도 도움이 될지 몰라요

http://stephane.ducasse.free.fr/FreeBooks.html

여기서 표지 맘에 드시는 걸로 하나 골라서 진지하지 않게 읽어보세요

객체에게 다가가는 길이 보이실지도 몰라요

OO로 가는 길은 클래스가 아니라 객체에게 가는 길이다라고 생각하게 만들어 준 언어가

스몰토크라서 추천합니다.

*클래스 구현에 대한 호기심을 버리고 객체 사용의 즐거움으로 고고싱~

winner의 이미지

OOP 이야기가 나오면 동상이몽이 정말 많은 것 같아요.
언어별로도 생각보다 간극이 큽니다. Java, C++가 필요하시면 각 언어에 대해서 적절히 익혀나가시면 될 거라고 봐요.

ifree의 이미지

최근 함수형 언어에 대한 관심이 높아 지는 것도 이를 반영한 것이 아닌가합니다.
OOP 를 포함하는 다른 패러다임이 필요하지 않을까요?

이런 면에서 차라리 C++ 이 더 유연한 선택을 주는 것 같습니다.
모든 것을 클래스로 묶어 버리는 자바나 C# 이 과연 올바른 선택일지 의문이 드네요.

kyagrd의 이미지

Erick Mijer같은 연구원들을 중심으로 해서 함수형 언어 패러다임을 C#에서 적극적으로 도입하고 있습니다. delegate라는 걸로 람다함수를 표현할 수 있고 LINQ와 같은 라이브러리도 있죠. 그리고 var 키워드를 써서 local type inference도 합니다. 참고로 Erick Mijer는 최근 강연( http://www.youtube.com/watch?v=UuamC0T3hv8 , http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/ )에서 함수형 프로그래밍을 홍보하면서 MS 프로덕트에도 순수 함수형 언어를 올려보고 싶다는 의견을 적극 피력하고 있습니다.

C++이 물론 주류 OOP언어들 중에는 여러 프로그래밍 패러다임을 도입하고 알리는 데 선구자적인 역할을 했습니다. C++이 아니었다면 Java나 C#에서도 이런 시도가 더 늦어졌겠죠 아마. 지금도 C++이 C#에 비해 가지는 장점이라고 한다면 템플릿 메타프로그래밍을 활용하는 멋진 라이브러리들에 있죠. STL이라 불렸던 표준라이브러리를 포함하여 boost의 많은 라이브러리들 말입니다.

@ 그럼 이제부터는 광고글입니다. 이와 같은 프로그래밍 언어의 기술을 실무나 연구에서 활용하고 계신 분들께서 강좌 발표를 통해 아직 우리나라에서는 많이 쓰지 않거나 도입하기를 망설이는 좋은 기술을 더 많은 사람들이 쓰는 데 도움을 줄 수 있는 그런 행사를 계획하고 있습니다. 시간은 12월 12일 토요일 오후이고 장소는 서울대입니다. 자세한 내용은 제가 지난 번에 올렸던 글( http://kldp.org/node/109173 )을 참조해 주세요. 혹시 slee0303 님께서 Lisp이나 Scheme관련해서 혹시 강좌 발표를 해 주실 수 있나요? 평소에 Lisp 관련 글들을 많이 올리시는 걸로 기억합니다.

--
There's nothing so practical as a good theory. - Kurt Lewin
"하스켈로 배우는 프로그래밍" http://pl.pusan.ac.kr/~haskell/

--
There's nothing so practical as a good theory. - Kurt Lewin
"하스켈로 배우는 프로그래밍" http://pl.pusan.ac.kr/~haskell/

ifree의 이미지

LISP(Clojure) 에 관심이 있어서 배우고 있는데 아직 개념도 못잡고 있습니다.
LISP 잘하시는 분들이 많은 걸로 알고 있는데 배우러 가야겠네요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.