36
1 www.biicode.com Nov-13 “Los programadores de C++ somos los peores en reutilización de código(said by) Bjarne Stroustrup (in talk in) Carlos III

C++ code reuse with biicode

  • Upload
    biicode

  • View
    486

  • Download
    3

Embed Size (px)

Citation preview

1 www.biicode.com Nov-13

“Los programadores de C++

somos los peores en reutilización

de código”

(said by) Bjarne Stroustrup

(in talk in) Carlos III

www.biicode.com Nov-13

OpenCV

www.biicode.com Nov-13

The CImg Library

www.biicode.com Nov-13

Box2D, Google GTest

www.biicode.com Nov-13

Win, Linux, Mac…

6 www.biicode.com Nov-13

using std::cpp Univ. Carlos III, 26-Nov-13

www.biicode.com Nov-13

• CMake:

– Visual, Eclipse

– VC, Mingw, gcc

Biicode setup

www.biicode.com Nov-13

$ bii new hello

#include “hello.h”

main(){

hello();

}

void hello();

jdaniel/hello/hello.h

jdaniel/hello/main.cpp

#include “hello.h”

void hello(){

cout<<“HelloBii!”<<endl;

}

jdaniel/hello/hello.cpp

Hello Bii!

(jdaniel)

$ bii cpp:run HelloBii!

www.biicode.com Nov-13

#include “hello.h”

main(){

hello();

}

void hello();

jdaniel/hello/hello.h

jdaniel/hello/main.cpp

#include “hello.h”

void hello(){

cout<<“HelloBii!”<<endl;

}

jdaniel/hello/hello.cpp

Dependencies Graph

www.biicode.com Nov-13

ADD_EXECUTABLE(jdaniel_hello main.cpp hello.cpp)

CMakeLists.txt

Automate Build

#include “hello.h”

main(){

hello();

}

void hello();

jdaniel/hello/hello.h

jdaniel/hello/main.cpp

#include “hello.h”

void hello(){

cout<<“HelloBii!”<<endl;

}

jdaniel/hello/hello.cpp

www.biicode.com Nov-13

$ bii publish

tag: STABLE

msg: my hello

No empaquetado

No binarios

No librerias

No configuration

Publish

www.biicode.com Nov-13

$ bii new chat

$ bii find

$ bii cpp:run

HelloBii!

HelloBii!

#include “chat.h”

main(){

chat();

}

#include “jdaniel/hello/hello.h”

void chat(){

hello();

hello();

}

lguerrero/chat/chat.h

lguerrero/chat/main.cpp

Reuse & Play

(lguerrero)

www.biicode.com Nov-13

SRC SRC

#include “chat.h”

main(){

chat();

}

#include “jdaniel/hello/hello.h”

void chat(){

hello();

hello();

}

lguerrero/chat/chat.h

lguerrero/chat/main.cpp

DEP DEP

void hello();

jdaniel/hello/hello.h

#include “hello.h”

void hello(){

cout<<“HelloBii!”<<endl;

}

jdaniel/hello/hello.cpp

Find & Get

www.biicode.com Nov-13

SRC SRC

#include “chat.h”

main(){

chat();

}

#include “jdaniel/hello/hello.h”

void chat(){

hello();

hello();

}

lguerrero/chat/chat.h

lguerrero/chat/main.cpp

DEP DEP

void hello();

jdaniel/hello/hello.h

#include “hello.h”

void hello(){

cout<<“HelloBii!”<<endl;

}

jdaniel/hello/hello.cpp

ADD_LIBRARY(jdaniel_hello hello.cpp) ADD_EXECUTABLE(lguerrero_chat main.cpp) TARGET_LINK_LIBRARIES(lguerrero_chat jdaniel_hello)

CMakeLists.txt

Build

www.biicode.com Nov-13

$ bii publish

Publish

www.biicode.com Nov-13

$ bii new faisbuk

$ bii find

$ bii cpp:run

HelloBii!

HelloBii!

#include “lguerrero/chat/chat.h”

main(){

chat();

}

mark/faisbuk/main.cpp

Reuse & Play

(mark)

www.biicode.com Nov-13

#include <google/gtest/gtest.h>

More sleep

www.biicode.com Nov-13

DRY (but not CtrlC, CtrlV)

www.biicode.com Nov-13

0 0

$ bii publish

tag: STABLE

msg: wow!

jdaniel/hello

#include “hello.h”

void hello(){

cout<<“Bii rocks!”<<endl;

}

jdaniel/hello/hello.cpp

1 1

Dep Versions

www.biicode.com Nov-13

$ cd chat

$ bii find --update

$ bii cpp:run

Bii rocks!

Bii rocks!

Update

(lguerrero)

www.biicode.com Nov-13

default:

- block: .

- [branch.name == "master" and branch.user == block.user, tag==STABLE, 1]

- tag>=ALPHA

- v>3 and v<8

- block: “jdaniel/hello”

Find (rules)

www.biicode.com Nov-13

1 1 0 0 jdaniel/hello

0 0

lguerrero/chat

Compatibility (file level)

0 0 diego/bot

www.biicode.com Nov-13

Mngr.h (1)

Pang.h (0)

Mngr.h (2)

Mngr.h (0)

#include “Mngr.h”

Ball.h (1)

Ball.h (0)

#include “Ball.h”

M1 M2 M3

G

B1 B2

CSP (combinatory)

www.biicode.com Nov-13

$ bii new hello (src/jdaniel/hello) $ bii cpp:run > HelloBii!

#include “hello.h”

main(){

hello();

}

void hello();

jdaniel/hello/hello.h

jdaniel/hello/main.cpp

#include “hello.h”

//bii://jdaniel/hello/hello.txt

void hello(){

f(“jdaniel/hello/hello.txt”)>>msg;

cout<<msg<<endl;

}

jdaniel/hello/hello.cpp

Hello Bii!

jdaniel/hello/hello.txt

Data Files

www.biicode.com Nov-13

$ bii new hello (src/jdaniel/hello) $ bii cpp:run > HelloBii!

#include “hello.h”

main(){

hello();

}

void hello();

jdaniel/hello/hello.h

jdaniel/hello/main.cpp

#include “hello.h”

//bii://jdaniel/hello/cpp_rules.bii

void hello(){

auto msg = “HelloBii!”;

cout<<msg<<endl;

}

jdaniel/hello/hello.cpp

Build Rules

target.std=“c++11”

jdaniel/hello/cpp_rules.bii

www.biicode.com Nov-13

$ bii new hello (src/jdaniel/hello) $ bii cpp:run > HelloBii win!

#include “hello.h”

void hello(){

cout<< “HelloBii win!”<<endl;

}

jdaniel/hello/win/hello.cpp

Config Rules

if os.family != “Windows”:

return nix

else:

return win

jdaniel/hello/bii/virtual.bii

#include “hello.h”

void hello(){

cout<< “HelloBii *nix!”<<endl;

}

jdaniel/hello/nix/hello.cpp

www.biicode.com Nov-13

$ cd chat $ bii open jdaniel/hello $ bii cpp:run Bii super rocks! Bii super rocks! $ bii publish hello branch: newMsg

jdaniel/hello/hello.cpp

#include “hello.h”

void hello(){

cout<<“Bii super rocks!”<<endl;

}

( /master): #1 jdaniel/hello

(jdaniel/master): #1

lguerrero/chat

jdaniel/hello

(lguerrero/newmsg): #0

Collaborate

(lguerrero)

www.biicode.com Nov-13

The Web

www.biicode.com Nov-13

Real Use Accounting

www.biicode.com Nov-13

Current status

www.biicode.com Nov-13

Beta 1 month

www.biicode.com Nov-13

• Private

• Accounting

• Other languages (Python, Node, Fortran)

– “Its kind of loony tunes that PyPI, RubyGems, CPAN, NPM are all separate systems” A. Gaynor (yesterday)

• RaspberryPI

• Other languages integration(python + c)

• Challenges:

– Scalability, robustness, security

Roadmap

www.biicode.com Nov-13

• YES: – Zlib, box2d, little_cms, crypto, freeglut, eigen, csparse, gtest, gmock

• NO: – Boost (binary ongoing, git?) – OpenCV (src ongoing) – WxWidgets (binary experimental, src ongoing)

• FEW: – Docs, tutorials – Google help – Usability

• EXPERIMENTAL: – Merge – Git

Community Beta

www.biicode.com Nov-13

• SOLVE PROBLEMS

– 3 hours => 0s for the whole world

– Every single file counts

• Opportunity to lead the change

Why Biicode?

www.biicode.com Nov-13

PREMIUM USERS

OPEN SOURCE PROPRIETARY CODE

FREE USERS

€ $

REVENUE SPLIT

$

Biicode gives back!

36 www.biicode.com Nov-13

THANK YOU!

www.biicode.com