미니멀리즘을 생각할 때 나는 Lisp and Go를 생각 합니다 . Lisp를 사용하면 함수와 목록 만 있으면 얻을 수있는만큼 간단합니다 (물론 조금 더 있지만 무엇이든). 그러나 Go 사례가 더 흥미 롭다고 생각합니다.
Go는 단순하도록 설계되었습니다 (적절한 읽기입니다). 그들이 사용하는 용어는 "기능 직교성 (feature orthogonality)"이며, 이는 어떤 특징이 진정으로 독특한 것을 제공하는 경우에만 추가되어야한다는 것을 의미합니다. 이는 Plan9에 대한 저자의 Russ Cox 와 Rob Pike의 생각으로 시작된 것으로 보인다. (최소한의 디자인에 관심이 있다면 간단한 창 시스템 에 관한 Rob Pike의 논문을 잘 읽어보십시오.)
다음은 간단한 구문 예입니다.
하나의 루핑 구조 만
루프는 다음 중 하나처럼 보일 수 있습니다.
무한 루프
for {
}
while 루프
for <conditional> {
}
전통적인 for 루프
for i := 0; i < 10; i++ {
}
Foreach 루프
// works for maps or arrays
for k, v := range arr {
}
다목적 스위치
switch {
// cases must be evaluate to a boolean
}
switch <value> {
}
switch t := <value>; t {
// can use t inside
}
여러 번 반환
return val1, val2, ...
- 던질 필요가 없습니다 (마지막 반환 값으로 오류를 전달하십시오)
- 출력 매개 변수가 필요 없음
- 튜플의 필요성을 제거
인터페이스
type X interface {
DoSomething()
String() string
}
임베딩
type A struct {
Thing string
}
type B struct {
A // embeds A in B, so B.Thing refers to A.Thing
}
- 상속과 같은 문제를 해결
- 수업이 필요하지 않음
채널
세마포어를 구현하는 데 사용할 수 있습니다
var c = make(chan bool, 1)
c<-true // semaphore lock
<-c // semaphore free
스레드 간 메시지 전달에 사용
func produce(c chan<- bool) {
for {
c <- true
}
}
func consume(c <-chan bool) {
for {
<-c
}
}
var c = make(chan bool)
go produce(c)
go consume(c)
비동기 이벤트를 처리하는 데 사용할 수 있습니다
func async() chan bool {
var c = make(chan bool)
go doSomethingAsync(c)
return c
}
// wait for long async process to finish
c := async()
select {
case _ = <-c:
}
결론
문법의 모든 부분을 다루지는 않겠지 만, 미니멀리즘이 무엇을 할 수 있는지 알 수 있기를 바랍니다. 이 언어는 많은 새로운 기능을 추가하기 때문이 아니라 추가 기능없이 다른 언어의 최상의 기능을 사용하기 때문에 흥미 롭습니다.
일반적으로 문제를 해결하는 한 가지 "최상의"방법이 있습니다. 예를 들어, 메일 링리스트에서 많은 사용자가 제네릭이없는 것에 대해 불평합니다. 토론 후, 그들은 자신이하고 싶은 모든 것이 인터페이스를 통해 이루어질 수 있다는 것을 알고 있습니다. 관용구 문에 대한 효과적인 예를 읽으십시오 .
KISS 언어의 장점은 코드 스타일이 언어에 의해 제한되기 때문에 관용적 코드를 작성할 수 있다는 것입니다. 예를 들어, Go에서는 다음과 같이 작성할 수 없습니다.
if <condition>
statement;
중괄호를 사용해야합니다.
if <condition> {
statement;
}
구문에는 다른 많은 사람들의 코드를 쉽게 읽을 수있는 다른 많은 예제가 있습니다.
특색있는 언어에 비해 KISS 언어의 장점 :
- 다른 사람의 코드를 이해하기 쉽게
- 전체 언어를 이해하기 쉬움 (C ++은 이해하기 어려운 것으로 유명합니다)
- 구문이 아닌 알고리즘에 집중