{ Jit  }



A language for journalists

 Language Guru  }

+ Prashant


{  Tester  }


+ Raul 

 Integrator  }


+ Robert

{  Architect  }


+ Bocheng

{ Project Manager  }




+ Cecilia 


Problem:

Journalists have poor methods of record-keeping and content-sharing

Solution:

Create a git-like language of articles for easy access, analysis and collaboration

Audience:

Designed for reporters with little to no programming experience.

JIT

 Syntax

node cool_article = createNode()
cool_article.author = "Al Aho"cool_article.title = "these students made a programming language and you won't believe what happened next!"// declare a super_awesome node
if (cool_article.author == "Al Aho") then { say ("#winning")else { super_awesome = myNode1 ^^ myNode2 over BODY, DATE }save (super_awesome) push (super_awesome)


Syntax


   Data Types

Node
node cool_article = createNode() cool_article.author = "Al Aho"

                                                                                List 

                                                                             Graph

                                                                 31 Jit keywords

                               newfun or not body publisher author  

     9 built-in functions
                              say, listen, get, save, push, pull, search

Syntax


Basic operators
+  -  *  / > < == and or

Flow control
for-loops  if-then-else
if (cool_article.author == "Al Aho") then {    say ("#winning")else { 
Article Arithmetic
^^ ++ --
awesome_node = myNode1 ^^ myNode2 over BODY, DATE



{ Demo }

Architecture


Integration

PLY ( Python Lex-Yacc )

Integration

 
class Node(Base):
    __tablename__ = 'node'

    id = Column(Integer, primary_key=True)
    created_at = Column(DateTime, default=datetime.datetime.now)
    updated_at = Column(DateTime, default=datetime.datetime.now,
                        onupdate=datetime.datetime.now)
    title = Column(String)
    author = Column(String)
    date = Column(DateTime)
    publisher = Column(String)
    body = Column(String)
    keywords = relationship("Keyword",
                            secondary=node_keywords_table,
                            backref="nodes")

Integration

         
     

Integration




github.com/kcecireyes/JIT

Testing


Code checks (is it valid Python?)
Regression testing

Red, Green, Refactor

Unittest

    def test_function_declarations(self):
        self.assertTrue(self.compare(self.program17)) 

    def test_the_universe(self):
        self.assertTrue(self.compare(self.the_last_program)) 

    def test_arithmetic(self):
        self.assertTrue(self.compare(self.program19))

    def compare(self, program):
        match = True
        name = program
        prog = self.jit + " " + self.flag + " " + program 

        ref = program + self.ref_ext
        out = program + self.out_ext


Workflow




Bi-weekly meetings
Email "listserv"


when2meet
googleDocs






{ What We Learned }

Talk to TAs and professor often!
test, test, test
K.I.S.S.










a compiler is just code
 

(only partly crushed)

  { Hopes & Dreams }

• Full-fledged remote database

• more built-in functions

 • world domination


Jit is {powerful}

packs NLP and version-control principles in one punch

Jit is {social}

designed for ease of collaboration and research

Jit is {needed}

journalists should == coders





it will prevent mistakes like this ...



{ Thanks! }

Jit

By rkuykendall