{
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
Journalists have poor methods of record-keeping and content-sharing
Solution:
Create a git-like language of articles for easy access, analysis and collaboration
Create a git-like language of articles for easy access, analysis and collaboration
Audience:
Designed for reporters with little to no programming experience.
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!
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
Jit
- 2,671