https://github.com/tinyjin/flow
순서도 기반의 프로그래밍 언어 '플로우'
https://github.com/tinyjin/flow
Last synced: 10 months ago
JSON representation
순서도 기반의 프로그래밍 언어 '플로우'
- Host: GitHub
- URL: https://github.com/tinyjin/flow
- Owner: tinyjin
- Created: 2018-03-18T12:16:53.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-05-16T15:38:27.000Z (over 7 years ago)
- Last Synced: 2025-01-22T21:28:05.412Z (12 months ago)
- Language: Java
- Homepage:
- Size: 89.8 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 플로우 프로그래밍 언어
## 개발배경
21세기 정보화 시대로 접어들면서 IT기술의 발전으로 소프트웨어 교육이 점차 의무화되어 가고 있습니다. 하지만 프로그래밍 초보자들에게 난해한 언어
의 문법은 다루기가 쉽지 않아 소프트웨어 교육의 큰 장벽으로 작용하고 있었습니다. 기존의 해결 방법으로 스크래치와 같은 블록형 프로그래밍 언어가 있지만, 문제해결능력을 기르기 위한 복잡한 알고리즘을 구현하기가 힘들고, 고급 언어와의 연계가 힘들었습니다. 따라서 고급 언어와 블록형 언어의 장점을 순서도와 접목시켜보자는 아이디어를 떠올리게 되었고, 프로그래밍 초보자들도 언어에 좀 더 쉽게 접근하여 소프트웨어 교육에 큰 도움이 되기를 기대하면서 본 프로그램을 개발하게 되었습니다.
## 기대효과 및 활용방안
본 프로그램은 다음과 같은 효과를 기대할 수 있습니다.
첫 번째, 언어 선택의 고민을 줄여줍니다. 프로그래밍을 시작하는 사람들은 어렵지만 실제 개발과 관련 있는 C나 Java를 배울까, 아니면 쉬운 스크래치를 배워볼까 고민을 하게 됩니다. 본 프로그램은 순서도를 기반으로 하여 이해하기 쉽고 C, Java 등 여러 언어로 번역되기 때문에 언어 선택의 고민을 덜어줄 수 있습니다.
두 번째, 소프트웨어 교육을 도와줍니다. 소프트웨어 교육에서 선생님들은 학생들에게 언어의 문법을 이해시키는 것이 힘들고, 학생들도 언어 문법을 이해하는 것이 힘듭니다. 본 프로그램은 순서도를 기반으로 하므로 선생님들이 어려운 문법의 설명이 없이 학생들을 이해시킬 수 있고, 학생들 또한
복잡한 문법을 고려할 필요 없이 프로그램의 흐름 그대로 이해할 수 있습니다. 뿐만아니라 기존의 소프트웨어 교육에서는 교육용 언어를 배우고 상위 수준의 언어를 배우는 것 처럼 단계별로 하나씩 따로 배웠다면, 앞으로는 교육용 언어와 여러 고급 언어들을 서로 연계하여 하나의 언어만 배우더라도 높은 수준의 언어까지 자연스럽게깨우치게 하는 교육 방식을 제안해 볼 수 있습니다.
세 번째, 알고리즘의 발표를 도와줍니다. 자신이 만든 알고리즘을 누군가에게 발표를 할 때 보통 기존의 코드를 순서도로 따로 만들어야 과정을 거쳐야 합니다. 플로우는 순서도를 기반으로 하는 언어이므로 따로 순서도를 만들 필요가 없기 때문에 힘들이지 않고 알고리즘의 발표를 할 수 있습니다.
네 번째, 고급 언어의 접근을 용이하게 해줍니다. 플로우는 여러 고급언어로 번역되기 때문에 자연스럽게 고급 언어를 접하게 됩니다. 문법이 난해한 고급 언어를 바로 익히게 되면 학생들은 어려움을 호소하게 되고 흥미를 잃을 수 있습니다. 고급 언어 이전에 플로우를 언어 학습의 가교 역할을 하는 도구로 활용한다면 고급 언어로의 접근을 좀 더 용이하게 해 줄 것입니다.
다섯 번째, 생각하는 힘을 길러줍니다. 문법에 중점하지 않으면 생각하는 힘이 증대되어 사고력이 점차로 신장됩니다. 이러한 사고력 증진은 학생들의 문제 해결력을 높여 주고 창의력 향상에도 상당한 영향을 미치게 됩니다.
## 차별성과 필요성
앞서 말했듯이 기존의 프로그래밍 언어에는 여러 단점들이 있습니다.
먼저 고급 언어는 프로그래밍 초보자들에게 어려운 문법이 있으며 한눈에 알아보기 힘들다는 점이고, 교육용으로 많이 쓰이는 블록형 언어는 제시된 블록만 가지고 프로그래밍을 해야 하므로 복잡한 알고리즘을 나타내기 힘듭니다. 또한 지금까지의 소프트웨어 교육은 교육용 언어를 배우고 더 나아가 고급 언어를 배우는 등 단계별로 하나씩 따로 배우기 때문에 각각의 언어에서 문법의 혼동이 초래하기도 했습니다. 그래서 저는 고급 언어의 단점을 보완하면서 장점들을 살릴 수 있는 언어와 교육용 언어와 고급 언어를 연계하는 것에 대한 필요성을 느꼈습니다.
플로우는 기존 언어들의 단점을 보완하여 고급언어가 가지는 알고리즘 구현의 우수성과, 블록형 언어가 가진 탈문법성의 장점을 지니며 교육용 언어와 고급언어를 연계하였다는 점에서 차별성을 가집니다. 이를 활용한다면 프로그래밍의 진입 장벽을 낮추어 소프트웨어 교육의 주 목적인 사고력 신장에 도움이 되고 언어 간의 연계를 통해 여러 고급언어로 넘어갈 때 문법의 차이를 즉각적으로 알 수 있어 언어 간의 차이점을 이해하는 데도 도움을 줄 수 있을 것입니다.
## ...추후 추가 예정
참고로 1.0 -> 2.0 으로 전환하면서 많은 플로우 번역기의 많은 오류가 발생했습니다.
또한, 안드로이드 버전의 업데이트로 인하여 안드로이드 M이상의 기기에서는 플로우 컴파일러가 제대로 동작하지 않을 수 있습니다.
추후 플로우의 버그 헌팅 및 개선이 이루어질 예정입니다.