프로젝트/졸업 프로젝트 8

소나무 언어에 다른 기술 접목 아이디어

M -> 1 번역 후 다시 1 -> M 번역 시 머신러닝 활용 다대일로 번역 후 다시 일대다로 번역될 때 항상 동일한 실행을 보장하는 코드로 번역이 되어야 할텐데 이때 머신러닝 기술을 활용하여 적절한 번역 내용을 도출하고 번역 수행할 수 있을 것 같다. 소나무 언어의 범위 외의 Solidity 코드를 소나무 언어로 번역 시 머신러닝 활용 기존에 네트워크에 존재하는 Solidity 코드를 가져다 소나무 언어로 번역하고자 할 때 정의된 소나무 언어의 범위를 벗어나는 Solidity 문법이 발견될 경우 원래대로라면 번역 자체가 이뤄지지 않겠지만 여기에 머신러닝을 활용할 수 있을까? 어떻게 학습을 시켜야할지는 모르겠다. Solidity -> 소나무 언어로 번역 시 적절한 변수명 도출 Solidity는 기본적으로..

solidity contract 분석 및 한글 계약서와의 비교

한글 프로그래밍 언어인 '소나무 언어'의 설계 과정에서 solidity 계약서에서 어떠한 문법이 주로 사용되며, 한글 언어로 변환되면서 solidity 언어의 어떤 부분이 간소화될 수 있을지 등을 도출하기 위해 이더리움 네트워크에 배포되어 있는 기존 계약서를 분석하고 한글 계약서와의 비교를 수행했다. 1. solidity contract 분석 1-1. 중고거래 contract contract escrow { // contract 생성자 constructor(uint _price) public payable { seller = msg.sender; // contract를 생성한 사람을 seller로 지정 price = _price; // contract 생성 시 물건 값을 받아 price에 저장 pay =..

이해당사자 특정 및 문제 상황 정의하기

1. 중고차 거래 현재 문제 상황 중고차 거래는 개인 대 개인으로 이뤄지는 경우가 많다. 이에 따라 매물의 신뢰도가 보장 되지 못해 허위 매물, 침수 차 거래 등 거래로 인한 피해를 겪는 경우가 발생한다. 딜러는 자신이 판매하려는 차에 문제가 없다는 사실을 증명하기 어렵다. 구매자는 자신이 구매하고자 하는 차량에 하자가 없다는 사실을 확인하기 어렵다. -> 블록체인이 중개인 역할을 수행할 수 있다. 가능한 것들 중고차의 제원, 이미지, 하자 정도 등의 정보를 프로그램화 하여 블록체인 네트워크에 등록한다. 구매자는 클라이언트 프로그램을 통해 블록체인 네트워크에 접속하여 구매하고자 하는 차량의 정보를 확인하고 차량을 구매한다. 단순 중고차 거래에만 스마트 컨트렉트를 활용하지 않고 판매하려는 중고차의 제원, ..

인프런 '블록체인과 솔리디티' - 솔리디티

솔리디티 스마트 컨트렉트를 만들기 위한 언어 C++, JS, Python의 영향을 받음 EVM(Ethereum Virtual Machine)을 타겟으로 함 EVM : 이더리움 노드들이 공유하는 하나의 거대한 가상 머신 스마트 컨트렉트는 수정, 삭제가 불가한 블록체인의 특성상 신중하게 작성해야 함 하지만 이 때문에 신뢰성이 보장되는 것 remix.ethereum.org → 웹 기반 솔리디티 IDE, 테스트 및 디버깅 기능 지원 솔리디티 특징 튜링 완전한 언어 두 가지 특수한 변수를 가짐 msg.sender → 메시지를 보낼 주소 , msg.value → 메시지로 보낼 값 스마트 컨트렉트 구조 contract → class와 비슷한 개념 솔리디티 데이터 타입 문자열 → string(utf8로 인코딩), by..

인프런 '블록체인과 솔리디티' - 블록체인

블록체인 말 그대로 블록들이 연결된 체인 블록? 쉽게 이야기 하면 데이터들의 집합 이러한 블록은 모든 사용자가 동일하게 가지고 있음 이를 통해 한 사용자가 다른 데이터를 가진 블록을 가지고 있다면 해당 데이터가 틀렸음을 알 수 있다. 탈중앙화? 기존의 보안은 철저히 통제된 저장소에 제한된 인원만 접근이 가능하도록 하여 성립됨 반면 블록체인은 가능한 많은 사람들이 데이터를 가지고 있도록 하여 보안을 유지 이러한 시스템에서 칩입자가 데이터를 조작하고자 하면 수많은 사람들이 가지고 있는 블록의 데이터를 모두 수정해야 하기 때문에 보안이 유지될 수 있음 암호학을 기반으로 이러한 시스템이 설계되어 있기 때문에 블록체인을 통한 보안 시스템이 신뢰받을 수 있게 됨 머클 트리 http://wiki.hash.kr/ind..

도출된 아이디어 덧붙이기

기존에 도출된 아이디어에 추가적으로 아이디어를 덧붙여본다. 1. 순 우리말로 만든 언어 + 나무 언어 한글 프로그래밍 언어 약속에서는 함수를 약속, 클래스를 묶음 등으로 표현하는 등 예약어를 한글로 번역하여 사용함. 이에 클래스를 숲, 생성자는 씨앗, 함수는 나무, 변수 선언은 잎 등으로 비유적으로 대체하여 사용하는 아이디어를 구상함. 코드를 작성하는 것에 익숙하지 않은 사용자들이 쉽게 클래스, 함수 등의 개념을 익힐 수 있을 것으로 기대함. [숲] 사람: [잎] 나이 = 20 [잎] 성별 = "남자" [씨앗] 사람(_나이, _성별): 나이 = _나이 성별 = _성별 [나무] 나이변경 (새로운나이): 나이 = 새로운나이 2. 온점 + 반점 도입 한글의 끝맺음은 보통 . (온점)이라는 사실에 기반하여 기존..

문제 정의

영어로 된 기존의 프로그래밍 언어는 if, else, while 등 명확한 단 하나의 예약어만을 갖음. 이에 반해 한글은 하나의 단어에도 다양한 조사가 사용될 수 있기 때문에 예약어를 하나로 지정하는 것이 애매함. 프로그래밍에 익숙하지 않은 사용자들이 처음부터 프로그래밍 언어의 구조에 맞춰 코드를 작성하는 것이 어려울 수 있다고 생각함. 한국어는 명사뒤에 은_는, 이_가 등 다양한 조사가 사용되며 변경될 가능성이 있는 문자열 변수를 출력할 때 조사를 확정해서 출력문을 작성할 수 없음. 대부분 한글 프로그래밍 언어의 주된 개발 목적은 영어에 익숙하지 않은 저학년 등의 컴퓨팅적 사고 능력 향상임. 기존의 class, function, variable, constructor 과 같은 어휘를 단순 번역할 경우 ..

아이디어 도출

한글로 된 언어 ‘ㄱ언어’를 개선하고 발전시키기 위한 아이디어를 도출함. 1. 하나의 기능에 여러 예약어 대응 영어로 된 기존의 프로그래밍 언어는 if, else, while 등 명확한 단 하나의 예약어만을 갖음. 이에 반해 한글은 하나의 단어에도 다양한 조사가 사용될 수 있기 때문에 예약어를 하나로 지정하는 것이 애매함. 따라서 하나의 기능에 해당하는 예약어를 여러 종류를 두어 보다 더 자유롭고 자연스럽게 코드를 작성할 수 있도록 함. 아래의 예시는 같은 기능을 수행하는 서로 다른 코드들의 예시를 나타냄. 만약에 [변수]가 [값] 이면 ~~~ --- 만약 [변수]가 [값] 이라면 ~~~ --- 만약 [변수]이 [값] 라면 ~~~ 변수 = 2 만약 [변수]가 사실이면 ~~~ --- 만약 [변수]가 참이면..