
Show HN: Clio Programming Language - pouya-eghbali
https://github.com/clio-lang/clio
======
pouya-eghbali
Clio is a pure functional lazy-evaluated programming language targeting
decentralized and distributed systems. It is made to take advantage of
multiple CPUs and CPU cores (parallelism) by default, to run on clusters and
on the cloud easily.

Link to github project: [https://github.com/clio-
lang/clio](https://github.com/clio-lang/clio)

My goal is to get feedback and your opinions on this language, I thank you in
advance for your interest and support!

~~~
BubRoss
Why is running on the cloud something that needs to be confronted at the
language level?

~~~
pouya-eghbali
Clio has a network-based approach to parallelism. It compiles to JS and uses
Node to run the generated JS code, so just like Node, it is single threaded.
Having a specification for remote calls gives us a few benefits, for example:

1\. We can use async remote function calls to run several tasks
simultaneously. Why block and wait for the results when we can request the
next one? This way you can also use resources on other machines on the
network. This solves the single threaded only issue.

2\. We can use functions and some libraries of other languages

I also wanted to make these simple tasks easier for the developer. 20-30 years
ago things didn't work like now, today we have new concepts: serverless,
cloud, saas... now things are different and it's nice to have some helpers in
the core. I actually started working on this project because of the
difficulties I had with C/Python/JavaScript when I was making a cloud heavy
app.

One more reason for this is that I want to encourage our users to write
smaller independent and interconnected programs instead of making a giant
monolithic app. This helps a lot with maintainability and portability.

------
tutfbhuf
Could you provide more and bigger examples e.g. a small REST Microservice?

~~~
pouya-eghbali
There is a simple to-do list app here: [https://github.com/clio-lang/clio-
todo](https://github.com/clio-lang/clio-todo)

It uses the microservices and web socket imports. To run it you'll need
rethinkdb. Maybe I can host it for you if you want to see how it works? Also,
if you want to see another specific example, I can make it. What would you
suggest?

