Pen programming language
Pen is a statically typed functional programming language for application programming with system injection. Its design is heavily inspired by the Go programming language and many functional programming languages like Haskell and Koka.
Vision
Pen aims to make large-scale software development efficient where a number of people develop software together over a long time. To realize that, it focuses on software maintainability and portability.
- Maintainability
- Everyone can learn the language and participate in actual development quickly.
- Developers can focus on application logic rather than ever-changing implementation details.
- The language keeps codes testable by injecting non-testable codes explicitly.
- Portability
- Programs written in the language can be ported to different platforms including WASM.
Background
Simplicity enables efficient collaboration of developers. The Go programming language has been notably successful as it's been one of the most simple but practical programming languages ever made. That being said, Go 2 decided to compromise some complexity for its evolution, such as its generics proposal.
On the other hand, Pen aims to be even simpler by focusing only on application programming as its target domain while adopting the same philosophy of simplicity. It pursues its minimal language design further after removing several features from Go like pointers, mutability, method syntax, global variables, circular references, etc.
Furthermore, although many programming languages have been solving problems of programming in history, few of them actually tackled ones of software engineering, where you also need to maintain and keep making changes to existing software continuously. Pen's approach to that is embracing battle-tested ideas in such field, such as Clean Architecture, into the language's principles and ecosystem. One of its most clear incarnations is system injection.
Features
- A mechanism to inject system functions into pure functions
- In other words, a dynamically typed effect system
- You can even define your own system APIs!
Static typing
Functional programming
- Closures
- Immutable values
- Pure functions by default
Others
Work in progress...
- Deterministic testing framework
- Asynchronous operations
- Thread-safe parallel computation
Install
You can install Pen via Homebrew by running the following command in your terminal.
brew install pen-lang/pen/pen
Documentation
Roadmap
Items are ordered by priority.
License
Dual-licensed under MIT and Apache 2.0.
from Hacker News https://ift.tt/2XpJVep
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.