Seinfeld Programming Language
=============================

`Seinfeld`_ is an Apache2 licensed programming language about nothing.

.. warning::

   What you see here is a joke-in-progress!

Here's what it looks like:

::

   pass  # TODO

Who will make programming language jokes for the next generation of developers?

Testimonials
------------

"You, my friend, have crossed the line between man and bum." ~ Jerry Seinfeld

"If you can’t say something bad about a programming language you shouldn’t say
anything at all." ~ George Costanza

"I’m speechless. I’m without speech." ~ Elaine Benes

"If you’re not gonna be a part of a civil society, then just get in your car
and drive on down to the Bay Area." ~ Kramer

Does your company or project use `Seinfeld`_? Send us a `message
<contact@grantjenks.com>`_ and let us know.

Features
--------

.. todo::

   - Elegant syntax
   - Dynamic typing
   - Automatic memory management?
   - Variety of basic data types
   - Object-oriented programming
   - Large standard library
   - Interactive mode and bundled development environment
   - Easily extended with C++
   - Code formatter: elaine -- more exclamation points!
   - Package manager: newman
   - "Modern C++ with the ergonomics of Python"
   - Can't reprogram "dot" operator.
   - Still has staticmethod, classmethod, and property
   - Ref counting with shared_ptr but analysis for stack-allocated variables?
   - Keep metaclasses?
     - Maybe just promote namedtuple and enum to language.
   - for-loop and while-loop have "nobreak:" option rather than "else:"
   - https://legacy.python.org/doc/essays/ppt/regrets/PythonRegrets.pdf
   - Maybe Seinfeld should simply be Python with cdef annotations?
   - For GC, would incminimark in PyPy be a good choice?
   - map and zip should have counterparts itermap and iterzip
   - Ditch dict views, prefer iterkeys, itervalues, iteritems.
   - Async/await are a mistake, gevent is better.
     - Keywords should be meaningless syntax that are addressed by linters.
   - Allow function calls without parens.
     - IF at least ONE argument and at start of line.

   .. image:: https://api.travis-ci.org/grantjenks/seinfeld-lang.svg?branch=master
      :target: http://www.grantjenks.com/docs/seinfeld-lang/

   .. image:: https://ci.appveyor.com/api/projects/status/github/grantjenks/seinfeld-lang?branch=master&svg=true
      :target: http://www.grantjenks.com/docs/seinfeld-lang/

Quickstart
----------

Installing Seinfeld is simple with `pip
<https://pypi.python.org/pypi/pip>`_::

  $ curl https://www.grantjenks.com/docs/seinfeld-lang/install.sh | bash
  $ seinfeld --docs

You can access documentation in the shell with Seinfeld's built-in help
system::

  > help()

User Guide
----------

For those wanting more details, this part of the documentation describes
introduction, benchmarks, development, and API.

.. todo::

   * `Seinfeld Tutorial`_
   * `Seinfeld Benchmarks`_
   * `Seinfeld API Reference`_
   * `Seinfeld Development`_

.. _`Seinfeld Tutorial`: http://www.grantjenks.com/docs/seinfeld-lang/tutorial.html
.. _`Seinfeld Benchmarks`: http://www.grantjenks.com/docs/seinfeld-lang/benchmarks.html
.. _`Seinfeld API Reference`: http://www.grantjenks.com/docs/seinfeld-lang/api.html
.. _`Seinfeld Development`: http://www.grantjenks.com/docs/seinfeld-lang/development.html

Reference and Indices
---------------------

* `Seinfeld Documentation`_
* `Seinfeld at PyPI`_
* `Seinfeld at GitHub`_
* `Seinfeld Issue Tracker`_

.. _`Seinfeld Documentation`: http://www.grantjenks.com/docs/seinfeld-lang/
.. _`Seinfeld at PyPI`: https://pypi.python.org/pypi/seinfeld-lang/
.. _`Seinfeld at GitHub`: https://github.com/grantjenks/seinfeld-lang/
.. _`Seinfeld Issue Tracker`: https://github.com/grantjenks/seinfeld-lang/issues/

Seinfeld License
----------------

Copyright 2018 Grant Jenks

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

.. _`Seinfeld`: http://www.grantjenks.com/docs/seinfeld-lang/
