npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ludwig-lang-docs

v0.1.18

Published

The Ludwig Programming Language

Downloads

3

Readme

The Ludwig Programming Language

All code samples in this document can be executed and edited directly in the browser. Please check out an interactive version of this page.

Ludwig is a minimalistic high-level multi-paradigm dynamically-typed programming language with a super-simple but human-friendly syntax.

The aim of this project is to explore a possibility of building a practically usable and human-friendly programming language using the fewest number of language constructs.

Ludwig is named after Ludwig Wittgenstein, a prominent Austrian-British philosopher who worked in the fields of philosophy of mathematics and philosophy of language.

We believe that after its run-time library and tooling mature, Ludwig can be used as a primary language for writing all kinds of software, from simple scripts to server-side applications. Besides that, the extreme simplicity of the language opens the way for other types of use:

  • as a portable target "back-end" language for translation from other languages
  • as an educational language, both for the ease of learning and the simplicity of implementation
  • as an embedded low-code/rule language
  • in genetic programming research and applications
  • as an intermediate representation for static analysis and optimization algorithms

Ludwig doesn't have and doesn't need special syntax for such basic constructs as if or for statements, module imports, visibility modifiers, object instantiation, visibility modifiers, and even numerical or boolean literals! Nonetheless, it does support all the aforementioned features in a very consistent and easy to grasp manner. Basically, instead of having a fixed set of hard-coded constructs such as the if-then-else statement, Ludwig allows you to define new control structures as regular functions. The same can be done in Lisp, but Ludwig achieves it without using Lisp macros or any similar metaprogramming technique and has just two special forms comparing to more than 25 in most LISP realizations.

The reference implementation of Ludwig interpreter is written in Java Script and can be used in both NodeJS and browser applications . Due to the simplicity of the language, implementing an interpreter or a compiler in other languages including Ludwig itself should be an easy task.

Ludwig contains 0.00% syntax sugar. This means that programs written in Ludwig are typically longer than equivalent programs written in other dynamic languages such as Python, JavaScript or LISP using various flavors of syntax sugar to provide shortcuts to common operations. As with Lisp's parentheses, some people may find ubiquitous square brackets in Ludwig code annoying and distracting. With its extremely simple and regular (even comparing to Lisp's) syntax, Ludwig is a great candidate for experiments with non-textual structural or projectional editing approaches.

[println `Hello, World`]