Welcome to Jac
Jac combines the power and flexibility of Python's ecosystem and 'pythonic' coding style with a unique 'jactastic' approach to programming. It draws inspiration from a variety of programming languages to improve upon Python to create an engaging, productive, and intuitive coding experience, giving the coder all of python's power, plus superpowers. Additionally, Jac introduces a keystone innovation that may prove to be a monumental advancement in programming languages called the Data Spatial Programming Model.
Just as Object-Oriented Programming (OOP) brought a higher level of abstraction to C and Fortran's functions offered a new way to manage assembly code, Jac introduces Data Spatial Programming constructs expanding on the concept of OOP. This new model is a higher-level abstraction that lets programmers rethink how they interact with data structures, and enable new ways of thinking and being productive.
That being said, Jac was meticulously designed to provide a seamless gradient of expressiveness allowing coders to code in a familiar pythonic style, while using as much or as little data spatial semantics as they'd like.
Join us on this exciting journey. Let's make code art with Jac.
Why Jac#
The journey of Jac began with the first version of a project called Jaseci. In its first incantation, Jac did not superset Python and only exposed the data spatial paradigm. This prior version of Jac, along with Jaseci, was used to create multiple software stacks a few of which became commercial products in production today. It was loved by the small group of coders who had the opportunity to use it and build with it. However, this prior Jac/Jaseci stack represented a separate ecosystem distinct from Python and only allowed expressing strictly Data Spatial programs with the small ecosystem of libraries and tools around it.
Over the three years of this first manifestation of Jac, we learned a lot within this small community. We've understood more about what works and what doesn't, what coders love, and what they need. The fruits of this learning are being reincarnated in this new, ambitious, and what is the full realization of the Jac vision. The scope of this iteration of Jac is indeed massive, but with discipline and hard work it will be realized. It's designed to be a production ready programming option for coders everywhere.
Jac builds upon Python much like Typescript or Elm builds upon Javascript. However, Jac includes a large scope of what we believe to be good ideas to add to Python and programming in general. These includes a number of constructs from other cutting edge languages, constructs for the AI era, and the beloved data spatial programming constructs introduced with the original Jac. Jac's target is pure Python bytecode, so there is very little risk for coming on board. If you want to eject a Jac program to pure python with calls to a library that implements Jac semantics, you can!
A Love Letter to Python, and Beyond#
Jac's design encapsulates a love for the world of programming, computers, and code. It captures the spirit of what makes coding joyful while expanding upon the foundation laid by the beloved language - Python. At its core, Jac is a love letter to Python and modern coding. It inherits the clean syntax, flexibility, and broad applicability that makes Python one of the most popular programming languages in the world while being designed to give us coders new (and old) superpowers.
A New Home Lagugae#
The goal of Jac is to serve as a home language for a coders lifestyle. Jac is built for us, folks who love python, see coding as beauty, and are serious hackers aiming to launch everything they do to the world. It is the language that I've always wanted and one that I believe you will enjoy too. We are looking forward to seeing what you will create with Jac, and how you will add to its evolving story.
Where Are We today#
Jac is supported and maintained by a very passionate group that spans the global and researchers at University of Michigan.
We're very open and welcoming of anyone who might be open to catching the Jac bug. If you're interested in being part of this project and learn more, please feel free to reach out. We'd love to hear from you. We have quite a journey ahead of us, but with dedication and collaboration, we're confident we can make Jac a beloved part of every coder's toolkit.
About Jac's Creator#
Jac was originally created by Jason Mars, the creator and BDFL (for now at least) of Jac and it's data spatial programming model. Since it's creation many brilliant minds have contributed code and ideas to Jac.
Features in Jac-Lang#
While Python is widely regarded for its simplicity and versatility, jac lang offers several advantages, particularly in terms of readability, flexibility, and type safety. By addressing some of the shortcomings of Python, jac lang provides developers with a more robust and scalable alternative for building modern applications.
-
Supersets Python
- As TypeScript supersets JavaScript, Jac-Lang is a language which was built on top of python which all pythony goodness available to all jac-lang programmers while including the entire python ecosystem, available to use.
-
Offers more readable code
- By adopting a clean and intuitive syntax, Jac Lang makes it easier for developers and coders to write code that is easy to understand and maintain.
-
More flexible than python, in terms of styling the code
- As jac lang uses syntax where multiline comments, multiline function declerations and more, which allows the user to arrange arguments, lists, dictionaties and other list-like objects in a readable format.
-
Type safe to support large codebases
- Jac lang prioritizes type safety to support the development of large-scale applications. By enforcing strict type checking, jac lang helps identify potential errors at compile time, rather than runtime, leading to more robust and reliable code.
-
Data Spatial Programming
- Jac Lang's programming approach focuses on data-spatial constructs, enhancing the handling and visualization of data in ways traditional programming paradigms might not support.
-
Programming with Large Language Models
- Jac-lang has an up & coming feature which allows programmers to integrate LLMs into their programming pipeline seamlessly without the need for learning extensive libraries and complicated new syntaxes.