1 / 12

tata

tata. Rafi Pelossof R-Temp Litvinovich Buko Obele Isaac Tozar. project objectives. To create a simple , robust, highly expressive language The language with only a few short lines of code should help programmers work with XML, HTTP and SOAP print hello world to the screen

Download Presentation

tata

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. tata Rafi Pelossof R-Temp Litvinovich Buko Obele Isaac Tozar

  2. project objectives • To create a simple , robust, highly expressive language • The language with only a few short lines of code should help programmers work with XML, HTTP and SOAP • print hello world to the screen • DMWNQSM (Do More With Not Quite So Much)

  3. function-ality • core • weak typing • println add 10 “5.0” • collections and currying • println filter “x” ( 1 2 3 4 5 6 ) • { eq mod get “x” 2 1 } • work with io, xml, http • io.save • “nyt_headlines.html” • xml.transform • io.file “rss2xhtml.xsl” • xml.doc url http://nyt.weblogs.com/rss.xml

  4. function-ality pt 2 • object oriented programming! • set “greeter” • oo.object • set “greeting” “Hello!” • set “doGreet” • oo.function { println get “greeting!” } • oo.endobject • set “doorman” • oo.object inherits get “greeter” • set “exitGreeting” • Set “doExitGreet” • oo.function { println get “exitGreeting” } • oo.endobject

  5. architecture • what’s the difference between an api and a language? • both allow the developer to do cool stuff • both provide a contract that the developer must respect • both are the same! in tata the language IS the api • huh?

  6. architecture pt 2 • function function what’s your function? • everything is a function • functions have parameters and return values • ex: • println concat concat “tata says” concat “hello” “world” • functions live on a stack. scripts gets executed by popping and evaluating functions

  7. architecture pt 3 • how does the parser go from words to functions? • easy! every token in a script represents some function • a parser examines a token and selects the function it represents and pushes it on the stack? • this is sexy! it’s possible for tata programs to generate, execute tata programs!

  8. testing plan • “in theory, practice and theory are the same. in practice, they’re not.” • HLD, LLD and so on… • you sit down and design this cool architecture and make strict interfaces between components. it’s worthless. • You write a bunch of code. It kinda works. Then you want to change something. Boom!

  9. test everything! • Unit testing! Write a little bit of code. Test it. Write a little bit more. Test that. Eventually you can print hello world Mission Accomplished! • Blackbox Testing! Does the language work like the LRM says or do we need to change the LRM? • Whitebox testing? Does hello world always print?

  10. example blackbox test Println div 3 4 Println div 4 4 Println div 3.5 4 Println div 0 4 Println div 3 0 Println div 3.5 4 Println div 3 true Println div false 2 Println div “true” 2 Println div ( ) ( ) Println div ( ) “1” Println div “hell” 666 : :

  11. lessons learned • when you don’t know what you’re doing write a test! • integration testing is a lie. programmers are dumb. Languages like java cant capture all assumptions and constraints. Write more tests! • buko’s hair is very fluffy

  12. lessons learned 2 • Feature freeze! If you try to do everything and make everything perfect and wonderful you wont succeed • Don’t touch buko’s hair • Group work is a bitch. People don’t show up to meetings. They don’t call you back. • Designing languages is fun. Implementing them not so much.

More Related