Files
five/docs/Five-Commercialization-Assessment.md
Charles KWON OhJun 486e466592 feat: FiveSql2 43/43, @byref, mutable closure, RTL 479, DateTime fix
Major changes since last commit:
- FiveSql2 SQL:1999 engine (10,458 LOC) — 43/43 ALL PASS
- 21 compiler/runtime bugs fixed (short-circuit AND/OR, FOR LOOP, etc.)
- @byref pass-by-reference via RefCell pattern
- Mutable closure capture (EnsureLocalRef + RefCell sharing)
- RTL: 400 → 479 functions (+79: file, string, datetime, hash, UTF-8)
- DateTime/Timestamp fully working (hb_DateTime, hb_Hour/Min/Sec, display)
- Reserved word guard (39 keywords blocked from function calls)
- AEval arg order fix (element before index)
- Closure capture redecl fix (unique _cap_ names per block)
- Hash/string indexing in ArrayPush/ArrayPop
- Harbour compat test suite: 51/51
- 4 docs: Porting Report, Implementation Plan, Optimization Plan, Commercialization

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 11:35:37 +09:00

12 KiB

Five 기술 수준 평가 및 상업화 단계 분석

Date: 2026-04-08 Author: Charles KWON OhJun For: Google Go Team / 회장님 프레젠테이션


1. Five는 무엇인가

Five는 Harbour(xBase) 코드를 네이티브 Go 바이너리로 변환하는 퓨전 언어다. 단순 포팅이 아니라, Harbour의 30년 비즈니스 로직 자산을 Go의 성능, 동시성, 크로스 플랫폼 배포 위에 올리는 프로젝트.

┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│  Harbour PRG │ ──→ │  Five 컴파일러 │ ──→ │  Go 바이너리  │
│  (비즈니스     │     │  (PRG → Go    │     │  (단일 실행파일 │
│   로직 30년)  │     │   소스 생성)   │     │   크로스플랫폼) │
└──────────────┘     └──────────────┘     └──────────────┘

2. 프로젝트 규모

항목 수치
Go 프로덕션 코드 35,534 LOC
Go 테스트 코드 11,190 LOC (24%)
RTL 내장 함수 400개
컴파일러 서브시스템 8개 (lexer, parser, analyzer, pp, ast, gengo, genpc, token)
RDD 드라이버 4종 (DBF, NTX, CDX, Memory)
PRG 테스트 프로그램 125개
기술 문서 29개 MD 파일
Git 커밋 65 (2026년 집중 개발)
FiveSql2 SQL 엔진 10,458 LOC (14 PRG 파일) — Five 위에서 구동

3. 기술 수준 평가

3.1 컴파일러 (Compiler) — 성숙

기능 상태 비고
전처리기 (#include, #define) 완성 Harbour 호환
렉서/파서 완성 전체 Harbour 문법
AST 분석기 완성 변수 스코프, 타입 추론
Go 코드 생성 (gengo) 완성 인라인 최적화 포함
Pcode 생성 (genpc) 완성 FRB 바이너리 모듈
Short-circuit AND/OR 완성 이번 세션에서 수정
코드 블록 클로저 캡처 완성 외부 변수 자동 캡처
FOR..NEXT LOOP 의미론 완성 goto 라벨 방식
CLASS/METHOD/INHERIT 완성 단일/다중 상속
STATIC 변수 완성 모듈 레벨
매크로 컴파일 (&) ⚠️ 부분 기본 동작, 복잡한 패턴 미완
@byref 참조 전달 ⚠️ 구현 중 RefCell 설계 완료, 통합 진행 중

3.2 런타임 (VM) — 고성능

기능 상태 성능
24바이트 Tagged Value Harbour 32B 대비 25% 절약
스택 기반 VM push/pop + fused opcodes
BEGIN SEQUENCE / RECOVER Go recover() 기반
ErrorBlock 에러 핸들링 Harbour 호환
Goroutine 확장 GO BLOCK, CHANNEL
대화형 디버거 TUI + CLI 모드
FRB 동적 모듈 로딩 런타임 심볼 해석
GC 최적화 COW 레코드, 소형 객체 풀

벤치마크 (Intel Core Ultra 7 255H):

연산 Five 비고
MakeInt 12ns Zero alloc
AddInt 26ns Zero alloc
TypeCheck 0.38ns 비트 시프트 1회
Function call ~50ns Frame + EndProc

3.3 RTL 표준 라이브러리 — 광범위

400개 함수, Harbour 700+ 대비 약 57% 커버리지.

카테고리 함수 수 예시
문자열 50+ Str, Val, SubStr, AllTrim, Upper, Lower, PadR, At, RAT
배열 30+ AAdd, ASize, AScan, ASort, ADel, AIns, AClone
날짜/시간 20+ Date, DToS, SToD, Day, Month, Year, Seconds
파일 I/O 20+ FOpen, FRead, FWrite, FClose, MemoRead, MemoWrit
데이터베이스 40+ dbUseArea, dbGoTop, dbSkip, FieldGet, FieldPut, dbSeek
수학 15+ Abs, Int, Round, Sqrt, Log, Exp, Max, Min
변환 15+ ValType, hb_ValToExp, hb_CStr, hb_Ntos
콘솔 10+ QOut, QQOut, Inkey, Row, Col
에러 5+ ErrorBlock, ErrorNew, Break
해시 10+ hb_Hash, hb_HHasKey, hb_HGet, hb_HSet

3.4 RDD (데이터베이스 엔진) — 실전 수준

드라이버 상태 벤치마크 (10K rows)
DBFNTX 완성 APPEND: 227ms, SEEK: 29ms, SCAN: 1ms
DBFCDX 완성 Compound index, multi-tag
MEMRDD 완성 In-memory 테스트용
dbCreate/USE/CLOSE
dbAppend/Delete/Pack PACK: 9,149ms (최적화 여지)
INDEX ON / dbSeek B-tree 검색
SET DELETED ON/OFF 소프트 삭제
Record locking ⚠️ 스텁 dbRLock/dbRUnlock 존재, 실제 잠금 미구현

3.5 FiveSql2 — Five 위에서 동작하는 SQL 엔진

10,458줄의 순수 Harbour PRG로 작성된 완전한 SQL 엔진. Five의 언어 기능 전체를 검증하는 리트머스 테스트.

SQL 기능 테스트 상태
SELECT / WHERE / ORDER BY 12 ALL PASS
GROUP BY / HAVING / DISTINCT 3 ALL PASS
INSERT / UPDATE / DELETE 3 ALL PASS
WITH (CTE) Non-Recursive 6 ALL PASS
WITH RECURSIVE 4 ALL PASS
Window Functions (ROW_NUMBER, RANK, LAG, LEAD, SUM OVER) 12 ALL PASS
CHECK / UNIQUE / FK 제약 8 ALL PASS
MERGE / UPSERT 3 ALL PASS
Combined CTE+Window+JOIN 5 ALL PASS
총계 43/43 100%

SQL 성능 (100 rows, ext4):

쿼리 시간 수준
SELECT * 0.8ms 실용
WHERE filter 1.6ms 실용
GROUP BY HAVING 3.0ms 실용
INNER JOIN (100x200) 8.0ms Hash Join 적용
Window Function 1.5~5ms 실용
CTE + Window + JOIN 18ms 최적화 여지 있음

4. 경쟁 제품 비교

4.1 Harbour → 다른 언어 변환기

프로젝트 방식 타겟 상태
Five PRG → Go source → native binary Go 활발 개발, 43/43 SQL pass
xHarbour C 기반 인터프리터 C binary 유지보수 모드
Harbour Core C 기반 인터프리터 C binary 커뮤니티 유지
LetoDB 네트워크 RDD C client/server 특수 목적

Five의 차별점:

  • 유일한 Go 네이티브 타겟 — 단일 바이너리, 크로스 컴파일
  • 유일한 goroutine/channel 통합 — Harbour 코드에서 직접 Go 동시성 사용
  • 유일한 SQL 엔진 — DBF 위에서 SQL:1999 표준 쿼리

4.2 xBase 시장 규모

전 세계 xBase/Clipper/dBASE 레거시 코드베이스:

  • 추정 수억 줄 의 비즈니스 로직 (금융, 유통, 제조, 정부)
  • 한국: 대기업 ERP, 은행 시스템, 정부 시스템에 Clipper/FoxPro 기반 다수
  • 브라질: Harbour 최대 시장 — 수천 기업이 Harbour로 운영
  • 유럽: 독일, 스페인, 이탈리아에 xBase 기반 기업 소프트웨어 다수

이들에게 현대화 경로 가 없다:

  • C → Go 포팅? 수년, 수백만 달러
  • 전체 재작성? 비즈니스 로직 손실 위험
  • Five? 기존 코드 그대로 컴파일 → Go 바이너리 ← 이것

5. 상업화 단계 분석

5.1 현재 위치: Late Alpha → Early Beta

┌─────────┐   ┌─────────┐   ┌─────────┐   ┌─────────┐   ┌─────────┐
│  PoC    │ → │  Alpha  │ → │  Beta   │ → │   RC    │ → │   GA    │
│ 개념증명 │   │ 핵심기능 │   │ 안정화  │   │ 릴리스  │   │ 상용    │
│         │   │ 완성    │   │ + 최적화│   │ 후보    │   │ 출시    │
└─────────┘   └─────────┘   └─────────┘   └─────────┘   └─────────┘
                   ▲
               현재 위치
              (Alpha 후반)

Alpha 완료 기준 달성:

  • 전체 Harbour 문법 파싱
  • Go 코드 생성 + 네이티브 바이너리
  • 400개 RTL 함수
  • DBF/NTX/CDX RDD
  • CLASS/INHERIT
  • BEGIN SEQUENCE / RECOVER
  • 실전 규모 프로그램 구동 (FiveSql2: 10,458 LOC)

Beta 진입에 필요한 것:

  • @byref 참조 전달 구현 (P0)
  • LOCAL 의미론 확정 (P0)
  • go test ALL PASS 유지 (현재 달성)
  • Harbour 호환성 테스트 스위트
  • 성능 프로파일링 + 병목 해결

5.2 상업화까지의 거리

단계 예상 필요 작업
Beta (기능 완성) 1~2개월 @byref, LOCAL, 호환성 테스트
RC (릴리스 후보) +1개월 성능 최적화, 문서화, 엣지 케이스
GA 1.0 (상용 출시) +1개월 패키징, 라이선스, 마케팅 자료

5.3 상업 모델 제안

Model A: 개발 도구 라이선스

Five Community Edition  — 무료 (오픈소스, 개인/소규모)
Five Professional       — $499/yr (기술 지원, 상업 라이선스)
Five Enterprise         — $2,999/yr (우선 지원, 커스텀 RTL, SLA)

타겟: Harbour/Clipper 코드를 현대화하려는 기업

Model B: 마이그레이션 서비스

코드 분석 리포트  — $5,000 (기존 PRG 코드 호환성 분석)
마이그레이션 지원 — $50,000~$500,000 (규모에 따라)
연간 유지보수    — 마이그레이션 비용의 15%

타겟: 레거시 시스템 현대화가 급한 대기업

Model C: SaaS/PaaS

Five Cloud — 클라우드에서 Harbour 앱 실행
            Go 바이너리로 컴파일 → 컨테이너 배포
            $99/mo 기본, $499/mo 프로

타겟: DevOps 역량 없는 중소기업


6. 리스크 분석

6.1 기술 리스크

리스크 심각도 대응
@byref 미구현 높음 RefCell 설계 완료, 구현 1주 이내
Harbour 700+ 함수 중 300+ 미구현 중간 On-demand 구현, 사용 빈도순
매크로 컴파일 제한 중간 런타임 파서 필요, 복잡도 높음
성능 (JOIN, CTE) 낮음 최적화 계획 수립 완료
Record locking 낮음 단일 사용자/프로세스 환경에서는 불필요

6.2 시장 리스크

리스크 심각도 대응
xBase 시장 축소 중간 레거시 현대화 수요는 오히려 증가
Go 생태계 변화 낮음 Go 하위 호환성 보장 정책
경쟁자 출현 낮음 선점 효과, 기술 장벽 높음

7. 회장님께 보여줄 데모 시나리오

Demo 1: "30년 된 코드가 Go 바이너리로" (2분)

# Harbour PRG 파일 (비즈니스 로직)
cat employees.prg

# Five로 컴파일 → 단일 Go 바이너리
./five build employees.prg -o employees
ls -la employees    # 18MB 단일 실행파일

# 실행
./employees

Demo 2: "SQL 엔진 — 10,458줄이 그대로 동작" (3분)

# FiveSql2: 순수 Harbour로 작성된 SQL 엔진
./five build test_sql1999.prg src/*.prg -o sql_test

# 43개 SQL:1999 표준 테스트 실행
./sql_test
# → 43/43 ALL PASS (100%)

Demo 3: "벤치마크" (1분)

./bench_sql
# SELECT *:  0.8ms
# JOIN:      8ms (Hash Join)
# Window:    1.5ms
# CTE:       5.6ms (Recursive)

Demo 4: "Goroutine in Harbour" (1분)

// Harbour 코드에서 Go goroutine 직접 사용
PROCEDURE Main()
   GO BLOCK {|| HeavyTask() }
   GO BLOCK {|| AnotherTask() }
   ? "Both running concurrently"
RETURN

8. 결론

Five의 현재 수준

"Alpha 후반 — 실전 규모 프로그램(10K+ LOC)이 100% 통과하는 유일한 Harbour→Go 트랜스파일러"

상업화 준비도

항목 점수 (10점 만점)
기술 완성도 7/10 — 핵심 기능 완성, @byref/매크로 남음
성능 8/10 — 서브밀리초 쿼리, Hash Join, fused opcodes
안정성 6/10 — 43/43 통과하나 엣지 케이스 검증 필요
문서화 7/10 — 29개 기술문서, 부족한 건 사용자 가이드
시장 준비 5/10 — 제품은 있으나 패키징/마케팅 없음
종합 6.6/10

한 줄 요약

Five는 "Harbour의 30년 비즈니스 로직 + Go의 현대적 성능"을 결합한 세계 유일의 실전 검증된 Harbour→Go 퓨전 언어이며, 상용화까지 약 3개월의 안정화 작업이 남아있다.