Sunday, September 19, 2021

Pen: The programming language for scalable development

Pen programming language

GitHub Action License Twitter

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

Here

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.