SlideShare a Scribd company logo
ooc A hybrid language experiment
Why? Software sucks It's unreliable
It's slow
It's too hard to develop
It's not modular enough
[insert rant here] « The quality of a piece of software is inversely proportional to its popularity. »   —  Buchheit's law
Why? The fate of popular software
Why? Languages suck void  (* signal ( int ,  void  (* fp )( int )))( int );
Why? Languages suck void  (* signal ( int ,  void  (* fp )( int )))( int ); signal :  Func ( Int ,  Func ( Int )) ->  Func ( Int ) ✔ ✘
Why? Tools suck small.cpp(17) : error C2664: 'class std::_Tree<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >const ,int>,struct std::multimap<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<int> >::_Kfn,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<int> > ::iterator __thiscall std::multimap<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<int> >::insert(const struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,int> &)' : cannot convert parameter 1 from 'const int' to 'const struct std::pair<class std  ::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,int> &'  Reason: cannot convert from 'const int' to 'const struct std::pair<class  std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> const ,int>'  No constructor could take the source type, or constructor overload resolution was ambiguous
Why? Tools suck GNU autoconf, automake, autoreconf – masochism
GNU ld – the kitchen sink of linkers
GNU make – the brainless servant Bad workers blame the tool What if good workers do too?
Break with tradition
Why? School assignment in C – laziness. 4 months later – ooc 0.1
« Version 1 Sucks, But Ship It Anyway » – J. Atwood Finding a purpose To remove obstacles
To encourage experimentation
To minimize frustration
What? Classes, abstract, single inheritance, virtual by default
Garbage collection (Boehm, opt-out)
Covers, function overloading
Partial type inference, more type-checking
Arrays, pointers, manual memory management
Generic functions, generic classes, collections
Interfaces, operator overloading, properties
Closures, first-class functions, map/filter/reduce
What? I was gonna describe the syntax here
But we're short on schedule so I'll just sum it up:

More Related Content

PDF
Java vs. C/C++
PDF
Haxe by sergei egorov
PPTX
Connecting C++ and JavaScript on the Web with Embind
PPTX
JS Fest 2018. Виталий Ратушный. ES X
PDF
Java 8 - Lambdas and much more
PDF
Android antipatterns
PDF
Hourglass Interfaces for C++ APIs - CppCon 2014
PPTX
C++ Core Guidelines
Java vs. C/C++
Haxe by sergei egorov
Connecting C++ and JavaScript on the Web with Embind
JS Fest 2018. Виталий Ратушный. ES X
Java 8 - Lambdas and much more
Android antipatterns
Hourglass Interfaces for C++ APIs - CppCon 2014
C++ Core Guidelines

What's hot (20)

PPT
Intro to openFrameworks
PDF
Making JavaScript Libraries More Approachable
PDF
C++20 the small things - Timur Doumler
PDF
High Performance Managed Languages
PDF
Celebrating 30-th anniversary of the first C++ compiler: let's find bugs in it.
PDF
"Lego Programming" with Lorzy
PPT
2007 09 10 Fzi Training Groovy Grails V Ws
PPT
Cocoa for Web Developers
PPTX
Cross Platform App Development with C++
PDF
[COSCUP 2020] How to use llvm frontend library-libtooling
ODP
Danny Adair - Python Cookbook - Intro
PDF
Grant Rogerson SDEC2015
PDF
Command line arguments that make you smile
PPTX
C# for C++ Programmers
PDF
Google Dart
PDF
Android and cpp
PDF
Objective c beginner's guide
PPTX
Iron Languages - NYC CodeCamp 2/19/2011
PDF
Golang
PPT
Open Cv 2005 Q4 Tutorial
Intro to openFrameworks
Making JavaScript Libraries More Approachable
C++20 the small things - Timur Doumler
High Performance Managed Languages
Celebrating 30-th anniversary of the first C++ compiler: let's find bugs in it.
"Lego Programming" with Lorzy
2007 09 10 Fzi Training Groovy Grails V Ws
Cocoa for Web Developers
Cross Platform App Development with C++
[COSCUP 2020] How to use llvm frontend library-libtooling
Danny Adair - Python Cookbook - Intro
Grant Rogerson SDEC2015
Command line arguments that make you smile
C# for C++ Programmers
Google Dart
Android and cpp
Objective c beginner's guide
Iron Languages - NYC CodeCamp 2/19/2011
Golang
Open Cv 2005 Q4 Tutorial
Ad

Similar to ooc - A hybrid language experiment (20)

PDF
ooc - OSDC 2010 - Amos Wenger
PPTX
C++ l 1
ODP
The D Programming Language - Why I love it!
PPT
Stroustrup c++0x overview
PPTX
Legacy of Void*
PPTX
Unit i
PPTX
Return of c++
ODP
C++ development within OOo
PDF
Introduction-to-C-Part-1.pdf
PPTX
Modern C++
PDF
25 Years of C++ History Flashed in Front of My Eyes
PDF
Modern C++
PPTX
C++Basics2022.pptx
PPT
lecture02-cpp.ppt
PDF
C++primer
PDF
Object oriented programming c++
PDF
02 c++g3 d
PPTX
lecture NOTES ON OOPS C++ ON CLASS AND OBJECTS
PPTX
object oriented programming language fundamentals
PPT
73d32 session1 c++
ooc - OSDC 2010 - Amos Wenger
C++ l 1
The D Programming Language - Why I love it!
Stroustrup c++0x overview
Legacy of Void*
Unit i
Return of c++
C++ development within OOo
Introduction-to-C-Part-1.pdf
Modern C++
25 Years of C++ History Flashed in Front of My Eyes
Modern C++
C++Basics2022.pptx
lecture02-cpp.ppt
C++primer
Object oriented programming c++
02 c++g3 d
lecture NOTES ON OOPS C++ ON CLASS AND OBJECTS
object oriented programming language fundamentals
73d32 session1 c++
Ad

ooc - A hybrid language experiment