[ Essay - Technology, Essay - Intuition ] Chat GTP시대의 도래와 생각하는 방식에 대해

이미지
올해도 드디어 끝이 보이는 듯 싶다. 최근에 회사의 망년회를 끝내고 이래저래 회식이 늘어나는 듯 하다. 지금 시점에서는 개인적인 스케쥴도 마무리 되었기 때문에 이제는 여유롭게 연말을 즐기며 올해를 마무리 하려고 한다. 비교적 최근에 이사한 곳 근처의 스타벅스가 대학 병원 안에 있고 근처에 공원이 있어서 그런지 개를 대리고 산책하는 노인이나  아이를 동반한 가족이 눈에 띄게 보인다. 꽤나 좋은 곳으로 이사한듯 하다. 개인적으로는 올해 드디어 미루고 미루었던 이직을 하였고  그 이후에 비약적인 성장을 이루었으니  분명 안좋은 일도 있었지만 만족할 수 있는 해를 보내지 않았나 싶다. 내가 도달하려고 하는 곳으로 가려면 아직 갈길이 멀지만  궤도에 오른 것만으로도 큰 성과라면 큰 성과 일 것 이다. 어쨋든 이직하고 많은 일들을 맡게 되었는데 그 과정에서 나는 의도적으로 Chat GTP를 활용하고자 하였고 몇 가지 직감을 얻게 되었는데  이 중 한 가지를 글로 작성하려고 한다. 따라서 올해의 마무리 글은 Chat GTP에 대한 이야기로 마무리 하려고 한다. 서론 불과 약 10년전 IT업계는 원하던 원치 않던간에  한번의 큰 패러다임의 변화를 맞이해야만 했다 바로 아이폰의 등장에 따른 스마트폰의 시대의 도래와  이에 따른 IT업계의 패러다임 변화가 그것이다. 내 기억으로는 아주 격변의 시대였던 걸로 기억하는데 왜냐하면 게임은 물론이고 웹과 백신을 비롯한 모든 솔루션의 변화가 이루어졌다. 이 뿐만 아니라 가볍고 한손의 들어오는 이 디바이스는  그 당시에는 조금 비싸다는 인식이 있었지만  감추려고 해도 감출 수 없는 뛰어난 유용성으로 회의론을 금세 종식시켰고 이에 대한 결과로 어린아이 부터 노인 까지 작은 컴퓨터를 가지게 되었고 이는 당연하게도 IT업계의 전체적인 호황을 가져다주었다.  그리고 질서는 다시 한번 재정렬되었다. 이러한 패러다임의 변화의 증거로 언어 또한 변하게 되었는데...

[ Ruby ] 30분만에 대충 살펴보는 Ruby의 기본 ②



난 Harsh를 모른다.
그렇기에 일단 코드를 복사 붙여넣어 결과물을 봤다.


정확히는 모르겠지만, 대충 
books라는 객체에 Hash를 추가하는 것 같다.

다음으로 넘어가자


튜토리얼에서는 이 블록({ })을 이야기하려고 했던것 같다.


Ruby는 메소드 뒤에 {} 을 붙여서 
추가적인 처리를 할 수 있는 것 같다.


이번에는 블록({})과 파이프 기호에 대해 설명하는 것 같다.

5.times의 결과물을 블록의 시작 부분에 파이프로 넘길 수 있다고 설명한다.

따라서 .times 메소드의 결과물은 
블록 내부의 time이라는 파이프에 넘기게 될 것이다.

이를 확인해보자.


예상대로 각 결과물이 화면에 표시되는 것을 알 수 있다.

다음으로 넘어가보자.


다음으로 괄호()에 관한 이야기 이다.

Ruby에서는 ()를 붙이건 붙이지 않건 올바르게 작동한다고 한다.

물론 개인적으로는 괄호를 명시해주는 것이 가독성이 좋다고 생각한다.


위에서 언급한대로 있건 없건 컴파일 에러는 나오지 않는것을 확인할 수 있다.

다음으로 넘어가자.


이번에는 메소드를 정의하는 방법에 대한 예제인것 같다.

위의 코드를 작동해보면


위와 같이 메소드의 이름이 출력되는데,
아무것도 정의되어 있지 않으면 메소드 이름을 출력하는 것 같다.

다음으로 넘어가자.


이번에는 메소드 내부를 채워서 결과물을 확인하는 것 같다.

실행해보자.


정의한 메소드의 숫자를 집어넣으면
위와 같이 숫자 만큼 puts이 실행되는 것을 확인할 수 있다.

다음으로 넘어가자.


다음은 실제 메소드를 실행하는 것인데 
나는 위에서 먼저 확인했었다.

다음으로 넘어가자.


다음은 메소드에 return을 넣어 반환값을 확인하는 것이다.

결과를 확인해보자.


결과는 함수 내부의 처리대로 3번 puts이 실행되고
마지막 코드의 puts에 의해 
tame(3)의 리턴 값이 표시되는 것을 확인할 수 있다.

다음으로 넘어가자.


이제 본격적인 메소드 제어에 관한 이야기를 시작하는 것 같다.

튜토리얼에서 셰익스피어의 책의 목록을 저장한
get_shakey라는 변수를 제공해주었다.


get_shakey를 실행하면 위와 같이 
셰익스피어의 책 목록들을 확인할 수 있다.

다음으로 넘어가자.


이 데이터는 JSON 형식으로 지정되어 있다고 한다.

이를 코드로 출력해보면


예제의 코드로 
s라는 변수에서 각 리턴 값들을 
key, val에 넣고 val값을 출력하는 것을 볼 수 있다.

다음으로 넘어가자.


위의 예제의 메소드는
특정 년도를 메소드의 매개변수로 집어넣을때
해당 년도에 셰익스피어가 작성한 희극의 수를 반환하는 메소드이다.

위를 실행해보면


해당 메소드에 1591를 넣으면 
각 타이틀이 puts에 의해 출력되고 
마지막에 .count메소드에 의해 길이가 출력되는 것을 알 수 있다.

다음으로 넘어가자.


다음은 2개의 년도를 입력하면 
그 사이에 있는 희극들을 출력해주는 메소드로 보인다.

get_shakey라는 JSON파일에서 
William Shakespeare라는 키 값을 찾아오고
받아온 Value 값을 .select{}에 넣어 검색하고
마지막으로 .each{} 메소드를 활용해 

파이프 라인에 변수를 넣어 해당하는 책의 타이틀과 년도를 출력하는 것으로 보인다.

실제 확인해보자.


위와 같이 타이틀 이름과 년도가 출력되는 것을 확인할 수 있다.

다음으로 넘어가자.


다음은 Ruby에 제어문에 관한 내용인 것 같다.


제어문은 다른 프로그래밍 언어들과 큰 차이는 없어보인다.

다음으로 넘어가자.


이번에는 비교 연산자인 equal에 관한 문제인 것 같다.

이 부분은 많은 프로그래밍 언어에서 '=='를 채택하고 있기 때문에 
Ruby도 ==가 아닐까 싶다.


=를 사용할 경우 a가 0인데도 불구하고
a가 100일 경우의 메시지가 출력되며, 옳지 않다는 메시지를 확인할 수 있다.

그럼 ==를 사용해보자.


위와 같이 올바르게 else의 루틴으로 들어가는 것을 확인할 수 있다.

다음으로 넘어가자.


이번에는 메소드 정의에 관한 내용인 것 같다.

위의 코드를 살펴보면 맨 상단에 끝에 ?가 달려있는 메소드를 볼 수 있는데
내가 알고 있는 다른 언어에서는 없는 특성이다.


if와 같은 문법을 활용할때 주의해야할 점은 
끝낼때 end를 꼭 붙어줘야 한다는 점이다.

또한 흥미로운 점은 마치 C언어의 매크로 처럼 
메소드를 제어한다는 점인데 조금 가독성은 떨어져 보인다.

이 블로그의 인기 게시물

[ Web ] 웹 애플리케이션 아키텍처 (Web Application Architecture)

[ Web ] 서버 사이드(Sever Side) ? 클라이언트 사이드(Client Side)? 1 [서론, 클라이언트 사이드(Client Side)]

[ Web ] 웹 애플리케이션 서버 아키텍처의 정의 및 유형 ( Define and Types of Web Application Server Architecture )