Lightweight and expressive programming language similar to Python
Project description
Zink
Zink is a programming language that simplifies scripting with many tweaks and additions.
Why Zink and not other languages?
One of the problems developers face when writing in other languages is that it can sometimes be very complex to write simple expressions, like for example iterating through a list while also getting the current item's position in that list in Python, which uses the enumerate function.
Zink simplifies these kinds of operations by letting the developer write shorter code and still converting it to the correct functions.
Quick comparison
This Python script determines if a number is prime:
def is_prime(n: int) -> bool:
if n <= 1: return False
if n <= 3: return True
if n % 2 == 0 or n % 3 == 0: return False
i = 5
while i * i <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
This here is that same code written in Zink:
def is_prime(n: int): bool
if n <= 1; <-False;.
if n <= 3; <-True;.
if n % 2 == 0 or n % 3 == 0; <-False;.
i = 5
while i * i <= n
if n % i == 0 or n % (i + 2) == 0
<-False
.
i += 6
.
<-True
.
It may seem stupid (and longer), but now look at Python classes:
class Animal:
def __init__(self, name: str) -> None:
self.name = name
def eat(self, food: str) -> None:
print(self.name, "is eating", food)
class Bird(Animal):
def __init__(self, name: str, color: str) -> None:
super().__init__(name=name)
self.color = color
def fly(self) -> None:
print(self.color, self.name, "is flying")
And look at those same classes in Zink:
class Animal
/init @name: str;;.
def eat(@, food: str): None
print(@.name, "is eating", food)
.
.
class Bird from Animal
/init ^name: str, @color: str;;.
def fly(@): None
print(@.color, @.name, "is flying")
.
.
You can start to notice that it simplifies many things that require a lot of time to type: it replaces entire lines spent typing self.foo = foo to simply putting a @ before the argument, or automatically passing those arguments to the super().__init__ function with ^. In fact, that very function is abbreviated to @^.
Getting the length of an object is as easy as typing # before the object, and converting an object to a type is done with the repurposed keyword as.
Language support
Zink is also built with the idea of writing the same code while still converting it to many languages, like for example writing the source code in Zink and then converting it to both Python and Ruby.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zlang-2.5.1.tar.gz.
File metadata
- Download URL: zlang-2.5.1.tar.gz
- Upload date:
- Size: 14.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.13.3 Linux/6.14.6-arch1-1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f543e7a2ed228ea7b854377f86f911c4fc3c7fd92215933ecf1bbb8beead3110
|
|
| MD5 |
efdbdd0147c1c111962ae6fb60d95e0b
|
|
| BLAKE2b-256 |
2997dcbd3cdee1f8242f93e44ad5c497f4e155da701cf0299a8245e7d94e3466
|
File details
Details for the file zlang-2.5.1-py3-none-any.whl.
File metadata
- Download URL: zlang-2.5.1-py3-none-any.whl
- Upload date:
- Size: 16.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.13.3 Linux/6.14.6-arch1-1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b33cfa8b677388cbdfe4e202afa7f4af2550e209142e4d6758437ddb5651ad4d
|
|
| MD5 |
fdd74ad2143f2218b419ccd596cef17b
|
|
| BLAKE2b-256 |
db7e97354b15b6e2b99270af3b4c18e01313686fe43ded3ab1126071c70a4066
|