SlideShare une entreprise Scribd logo
1  sur  42
Télécharger pour lire hors ligne
THE DPROGRAMMING
LANGUAGE
Jordan Open Source Association - TechTalks 19th of September, 2015 Slides prepared by Yazan Dabain (github.com/yazd)
WHAT IS D?
A statically typed, compiled language with C-like syntax.
A languages that provides productivity and modelling power at the same time as
high performance and efficiency.
“D demonstrates that it is possible to build a powerful programming language that is both easy to use and generates fast code.”
HISTORY
WALTER BRIGHT
Creator of the D programming language.
Developer of multiple C and C++ compilers:
Zorland C, Zortech C++, Digital Mars C++, ...
Aware of the problems in the existing languages,
he decided to write his own language.
And so, D started out in 1999.
ANDREI ALEXANDRESCU
Co-designer of the D programming language.
Joined in 2006.
Renowned author/co-author of:
Modern C++ Design: Generic Programming
and Design Patterns Applied [2001]
C++ Coding Standards: 101 Rules, Guidelines,
and Best Practices [2004]
The D Programming Language [2009]
TIMELINE OF PROGRAMMING LANGUAGES
1970 1975 1980 1985 1990 1995 2000 2005 2010 2015
D2.068.1
C C++
Objective-C
Perl
Erlang
Bash
Haskell
Python
Visual Basic
Lua
PHP
Java
JavaScript
Ruby
D1
Python 2
C#
Scala D2
Python 3
Go
C++11
Java 7
C++14
Swift
Java 8
QUICK LOOK AT DSYNTAX
import std.stdio;
void main()
{
  writeln("Hello JOSA!");
}
/**
 * Returns the sum of elements.
 *
 * Params:
 *  elements = array of integers to sum
 */
int sum(int[] elements)
{
  int sum = 0;
  foreach (element; elements)
    sum += element;
  return sum;
}
/**
 * Writes each argument and its length
 * to stdout.
 */
void main(string[] args)
{
  import std.stdio;
  foreach (arg; args[1 .. $])
    writefln("%s: %s", arg, arg.length);
}
» ./main Welcome to JOSA TechTalks
Welcome: 7
to: 2
JOSA: 4
TechTalks: 9
QUICK LOOK AT DSYNTAX - BASIC TYPES,
ARRAYS AND ASSOCIATIVE ARRAYS
// logical data type:
bool
// integral data types:
byte,   short,  int,  long,  cent
ubyte, ushort, uint, ulong, ucent
// floating data types:
float, double, real
// character data types
char, wchar, dchar
// defining arrays:
int[] nums = [1, 2, 3, 4];
// accessing arrays:
int sum = nums[0] + nums[$ ­ 1];
// slicing arrays:
int[] slice = nums[0 .. $ / 2];
// defining an associative array:
int[string] wordCount;
// setting a value:
wordCount["hello"] = 1;
// check if key exists:
bool exists = "hello" in wordCount;
// reading a value:
int count = wordCount["hello"];
// reading a value with a default:
int count = wordCount.get("hello", 0);
QUICK LOOK AT DSYNTAX - TYPE INFERENCE
// without type inference
int      num  = 0;
string   str  = "D rocks!";
DateTime time = DateTime(2015, 9, 16);
// with automatic type inference
auto num  = 0;
auto str  = "D rocks!";
auto time = DateTime(2015, 9, 16);
QUICK LOOK AT DSYNTAX - LAMBDAS
// function declaration
int square(int x)
{
  return x * x;
}
// in lambda form
auto summation      = (int x, int y) => x + y;
auto multiplication = (int x, int y) => x * y;
auto subtraction    = (int x, int y) => x ­ y;
// usage like a normal function
auto result = summation(5, 10);
QUICK LOOK AT DSYNTAX - UNIFORM FUNCTION
CALL SYNTAX
auto withLastName(string firstName, string lastName) {
  return firstName ~ " " ~ lastName;
}
// can be used as:
auto fullName = "Yazan".withLastName("Dabain");
import std.datetime;
auto duration = 5.days + 12.hours;
//              vs
auto duration = days(5) + hours(12);
QUICK LOOK AT DSYNTAX
// Example:
//  find all words which are 4 letters or more
//  ps. no need to be picky about punctuation
import std.algorithm;
auto quote = "I would love to change the world, "
             "but they won't give me the source code.";
// without UFCS
auto result = filter!(word => word.length >= 4)(splitter(quote));
// with UFCS
auto result = quote.splitter().filter!(word => word.length >= 4)();
CODE COMPARISON
Dauto celsius = [31.0, 34.2, 33.1, 29.8];
auto fahrenheit = celsius.map!(c => 9.0 * c / 5.0 + 32.0);
writeln(fahrenheit);
Pythoncelsius = [31.0, 34.2, 33.1, 29.8]
fahrenheit = [9.0 * c / 5.0 + 32.0 for c in celsius]
print(fahrenheit)
Java 7double[] celsius = {31.0, 34.2, 33.1, 29.8};
double[] fahrenheit = new double[celsius.length];
for (int i = 0; i < celsius.length; i++)
  fahrenheit[i] = 9.0 * celsius[i] / 5.0 + 32.0;
for (double f : fahrenheit)
  System.out.println(f);
JSvar celsius = [31.0, 34.2, 33.1, 29.8];
var fahrenheit = celsius.map(function (v) {
  return 9.0 * v / 5.0 + 32;
});
console.log(fahrenheit.join(", "));
STATIC TYPING... EHH >.<
CODE DUPLICATION AND VERBOSITY
CODE DUPLICATION AND VERBOSITY
int add(int a, int b)
{
  return a + b;
}
float add(float a, float b)
{
  return a + b;
}
// what we want is something similar to:
Type add(Type a, Type b)
{
  return a + b;
}
TEMPLATES
// Template function
Type add(Type)(Type a, Type b)
{
  return a + b;
}
auto result = add!(int)(10, 12);
auto result = add!int(10, 12);
auto result = add(10, 12);
// Template function
auto add(T, U)(T a, U b)
{
  return a + b;
}
auto result = add(1, 12.5); // result is of type double
TEMPLATES
struct Tree
{
  int value;
  Tree[] children;
}
// Template struct
struct Tree(T)
{
  T value;
  Tree!T[] children;
}
// Templates are not limited to types!
auto squaredNumbers = [1, 2, 3, 4].map!(e => e * e)(); // 1, 4, 9, 16
// Due to the power of templates, strings need not be special types.
// Strings are character arrays, just as [1, 2, 3] is an integer array.
auto splitString  = "one two three".splitter(' '); // ["one", "two", "three"]
auto splitNumbers = [1, 2, 3, 0, 4, 5, 6].splitter(0); // [[1, 2, 3], [4, 5, 6]]
assert("hello world".startsWith("hello"));
assert([1, 2, 3, 4, 5, 6, 7, 8].startsWith([1, 2, 3]));
CODE DUPLICATION AND VERBOSITY?!!
UNFLEXIBILITY AND CONSTRAINTS
TYPES ARE DIMENSIONS
auto numberOfApples = 5;
auto numberOfOranges = 20;
// What would your math teacher say?
auto result = numberOfApples + numberOfOranges;
// Find the bug ὁ
void addToCart(int userId, int productId)
{
  auto shoppingCart = getUserShoppingCart(userId);
  shoppingCart.add(productId);
}
void buy(int userId, int[] products)
{
  foreach (product; products)
    addToCart(product, userId);
}
TYPES ARE DIMENSIONS
import std.typecons;
// create a new type (dimension) containing user ids / product ids
alias UserID = Typedef!(long, long.init, "userId");
alias ProductID = Typedef!(long, long.init, "productId");
void addToCart(UserID userId, ProductID productId) {
  auto shoppingCart = getUserShoppingCart(userId);
  shoppingCart.add(productId);
}
void buy(UserID userId, ProductID[] products) {
  foreach (product; products)
    addToCart(product, userId); // Compilation error
}
CONSTRAINTS ARE USEFUL
// Library from https://github.com/biozic/quantities
import quantities;
auto distance = 384_400 * kilo(meter);
auto speed = 299_792_458 * meter/second;
Time time = distance / speed;
Time time = speed / distance; // compilation error
// from quantities.si;
enum meter = unit!(Numeric, "L");
enum second = unit!(Numeric, "T");
alias Length = typeof(meter);
alias Time = typeof(second);
alias Speed = typeof(meter/second);
DYNAMIC TYPES ARE A SUBSET
import std.variant;
Variant anything = 12;
anything = "hello";
anything = File("readme.txt");
import vibe.data.json;
auto book = Json.emptyObject;
book.title = "D Web Development";
book.author = "Kai Nacke";
book.price = 19.20;
writeln(book.toPrettyString());
UNFLEXIBILITY AND CONSTRAINTS?!!
TEMPLATES.. WHAT COMES NEXT?
METAPROGRAMMING
“A metaprogram is a program that manipulates other programs or itself as its
data.”
COMPILE TIME FUNCTION EVALUATION (CTFE)
“Compile-time function evaluation is the ability of a compiler, that would
normally compile a function to machine code and execute it at run time, to
execute the function at compile time.”
COMPILE TIME FUNCTION EVALUATION (CTFE)
auto fromRoman(string roman) {
  auto flat = roman
    .replace("IV", "IIII")
    .replace("IX", "VIIII")
    .replace("XL", "XXXX")
    .replace("XC", "LXXXX");
  auto value =
      flat.count('I')
    + flat.count('V') * 5
    + flat.count('X') * 10
    + flat.count('L') * 50
    + flat.count('C') * 100;
  return value;
}
struct Roman {
  enum opDispatch(string name)
    = fromRoman(name);
}
void main()
{
  writeln(Roman.XV);
  writeln(Roman.IIX);
  writeln(Roman.VXCII);
}
0000000000432708 <_Dmain>:
  push   %rbp
  mov    %rsp,%rbp
  mov    $0xf,%edi
  callq  4334a0 <std.stdio.writeln>
  mov    $0xa,%edi
  callq  4334a0 <std.stdio.writeln>
  mov    $0x61,%edi
  callq  4334a0 <std.stdio.writeln>
  xor    %eax,%eax
  pop    %rbp
  retq
  xchg   %ax,%ax
REFLECTION
“Reflection is the ability of a computer program to examine and modify its own
structure and behavior (specifically the values, meta-data, properties and
functions).”
COMPILE-TIME REFLECTION IN D
struct Person {
  int id;
  string username;
  DateTime birthdate;
}
// we can use the compiler to tell us
// what members Person struct contain
[__traits(allMembers, Person)].writeln();
// prints ["id", "username", "birthdate"]
// or if Person has some specific member
if (__traits(hasMember, Person, "fname"))
  writeln("Yes, Person has a firstname");
void create(string title, float price) {
  …
}
// we can also retrieve function parameter
// names, default values, ...
assert(
  [ParameterIdentifierTuple!create] ==
  ["title", "price"]
);
COMPILE-TIME REFLECTION AND CODE
GENERATION
auto smaller(T)(T a, T b) {
  foreach (member; __traits(allMembers, T)) {
    if (__traits(getMember, a, member) < __traits(getMember, b, member))
      return true;
    else if (__traits(getMember, a, member) > __traits(getMember, b, member))
      return false;
  }
  return false; // equal
}
struct Person {
  string username;
  DateTime birthdate;
}
auto one = Person("joe", DateTime(1990, 1, 1));
auto two = Person("john", DateTime(1980, 1, 1));
writeln(smaller(one, two));
POWERFUL COMBINATION OF FEATURES
import pegged.grammar;
/// Numbers
mixin(grammar(`
Number:
  Scientific <~ Floating ( ('e' / 'E' ) Integer )?
  Floating   <~ Integer ('.' Unsigned )?
  Unsigned   <~ [0­9]+
  Integer    <~ Sign? Unsigned
  Hexa       <~ [0­9a­fA­F]+
  Sign       <­ '­' / '+'
`));
auto tree = Number("25.12e+21");
// use the parse tree
POWERFUL COMBINATION OF FEATURES
import vibe.data.json;
struct Foo {
  int number;
  string str;
}
auto f = Foo(12, "hello");
string json = serializeToJsonString(f);
assert(json == `{"number":12,"str":"hello"}`);
f = deserializeJson!Foo(`{"number": 42, "str": "the answer"}`);
assert(f.number == 42);
assert(f.str == "the answer");
VIBE.D
“Asynchronous I/O that doesn’t get in your way, written in D”
SIMPLE WEB SERVER
import vibe.d;
shared static this() {
  auto settings = new HTTPServerSettings;
  settings.port = 8080;
  listenHTTP(settings, &handleRequest);
}
void handleRequest(HTTPServerRequest req,
                   HTTPServerResponse res) {
  if (req.path == "/")
    res.writeBody("Hello, World!", "text/plain");
}
ROUTING
void userInfo(HTTPServerRequest req, HTTPServerResponse res) {
  auto username = req.params["user"];
  …
  render!("userinfo.dt", username)(res);
}
void addUser(HTTPServerRequest req, HTTPServerResponse res) {
  enforceHTTP("user" in req.form, HTTPStatus.badRequest, "Missing user field.");
  …
  res.redirect("/users/" ~ req.form["user"]);
}
shared static this() {
  auto router = new URLRouter();
  router
    .get("/users/:user", &userInfo)
    .post("/adduser", &addUser)
    .get("*", serveStaticFiles("./public/"));
  listenHTTP(new HTTPServerSettings, router);
}
REST INTERFACE
struct Weather {
  string status;
  double temperature; // °C
}
interface WeatherAPI {
  Weather getWeather();
  @property void location(string location);
  @property string location();
}
REST INTERFACE - SERVER
class WeatherProvider : WeatherAPI {
  private string m_location;
  Weather getWeather() { return Weather("sunny", 25); }
  @property void location(string location) { m_location = location; }
  @property string location() { return m_location; }
}
shared static this() {
  auto router = new URLRouter();
  router.registerRestInterface(new WeatherProvider());
  auto settings = new HTTPServerSettings;
  settings.port = 8080;
  listenHTTP(settings, router);
}
REST INTERFACE - REMOTE CLIENT
auto client = new RestInterfaceClient!WeatherAPI("http://127.0.0.1:8080/");
auto weather = client.getWeather();
logInfo("Weather: %s, %s °C", weather.status, weather.temperature);
client.location = "Paris";
logInfo("Location: %s", client.location);
REST INTERFACE - JS CLIENT
shared static this() {
  auto restSettings = new RestInterfaceSettings();
  restSettings.baseURL = URL("http://127.0.0.1:8080/");
  auto router = new URLRouter();
  router.registerRestInterface(new WeatherProvider(), restSettings);
  router.get("/weather.js", serveRestJSClient!WeatherAPI(restSettings));
  auto settings = new HTTPServerSettings;
  settings.port = 8080;
  listenHTTP(settings, router);
}
<!­­ in javascript ­­>
<script src="weather.js"></script>
var weather = WeatherAPI.getWeather();
console.log(weather.status);
console.log(weather.temperature);
LINKS AND RESOURCES
D Programming Language dlang.org
D forums forum.dlang.org
Programming in D - Ali Çehreli ddili.org/ders/d.en/
TDPL - Andrei Alexanderscu
D Templates - Philippe Sigaud github.com/PhilippeSigaud/D-templates-tutorial
Rosetta Code (various tasks solved in D) rosettacode.org/wiki/Category:D
IRC channel #d on freenode.org
Dub package manager code.dlang.org

Contenu connexe

Tendances

Overview of computer
Overview of computerOverview of computer
Overview of computerSunny Pavan
 
secure socket layer
secure socket layersecure socket layer
secure socket layerAmar Shah
 
CNIT 141: 12. Elliptic Curves
CNIT 141: 12. Elliptic CurvesCNIT 141: 12. Elliptic Curves
CNIT 141: 12. Elliptic CurvesSam Bowne
 
notes on Programming fundamentals
notes on Programming fundamentals notes on Programming fundamentals
notes on Programming fundamentals ArghodeepPaul
 
symmetric cipher model.pptx
symmetric cipher model.pptxsymmetric cipher model.pptx
symmetric cipher model.pptxAjaykumar967485
 
Language Translator ( Compiler)
Language Translator ( Compiler)Language Translator ( Compiler)
Language Translator ( Compiler)Nazmul Hyder
 
Generations of Programming Languages
Generations of Programming LanguagesGenerations of Programming Languages
Generations of Programming LanguagesTarun Sharma
 
CS6701 CRYPTOGRAPHY AND NETWORK SECURITY
CS6701 CRYPTOGRAPHY AND NETWORK SECURITYCS6701 CRYPTOGRAPHY AND NETWORK SECURITY
CS6701 CRYPTOGRAPHY AND NETWORK SECURITYKathirvel Ayyaswamy
 
10 instruction sets characteristics
10 instruction sets characteristics10 instruction sets characteristics
10 instruction sets characteristicsdilip kumar
 
One time password(otp)
One time password(otp)One time password(otp)
One time password(otp)Anjali Agrawal
 
1. over view and history of c
1. over view and history of c1. over view and history of c
1. over view and history of cHarish Kumawat
 
Lec28 29 30 animation
Lec28 29 30 animationLec28 29 30 animation
Lec28 29 30 animationDom Mike
 
Multimedia And Animation
Multimedia And AnimationMultimedia And Animation
Multimedia And AnimationRam Dutt Shukla
 

Tendances (20)

Overview of computer
Overview of computerOverview of computer
Overview of computer
 
Assembly language
Assembly languageAssembly language
Assembly language
 
secure socket layer
secure socket layersecure socket layer
secure socket layer
 
Multimedia Hardware
Multimedia HardwareMultimedia Hardware
Multimedia Hardware
 
CNIT 141: 12. Elliptic Curves
CNIT 141: 12. Elliptic CurvesCNIT 141: 12. Elliptic Curves
CNIT 141: 12. Elliptic Curves
 
notes on Programming fundamentals
notes on Programming fundamentals notes on Programming fundamentals
notes on Programming fundamentals
 
symmetric cipher model.pptx
symmetric cipher model.pptxsymmetric cipher model.pptx
symmetric cipher model.pptx
 
Language Translator ( Compiler)
Language Translator ( Compiler)Language Translator ( Compiler)
Language Translator ( Compiler)
 
Remote login
Remote loginRemote login
Remote login
 
Generations of Programming Languages
Generations of Programming LanguagesGenerations of Programming Languages
Generations of Programming Languages
 
CS6701 CRYPTOGRAPHY AND NETWORK SECURITY
CS6701 CRYPTOGRAPHY AND NETWORK SECURITYCS6701 CRYPTOGRAPHY AND NETWORK SECURITY
CS6701 CRYPTOGRAPHY AND NETWORK SECURITY
 
10 instruction sets characteristics
10 instruction sets characteristics10 instruction sets characteristics
10 instruction sets characteristics
 
One time password(otp)
One time password(otp)One time password(otp)
One time password(otp)
 
1. introduction to python
1. introduction to python1. introduction to python
1. introduction to python
 
Unit 3
Unit 3Unit 3
Unit 3
 
1. over view and history of c
1. over view and history of c1. over view and history of c
1. over view and history of c
 
Lec28 29 30 animation
Lec28 29 30 animationLec28 29 30 animation
Lec28 29 30 animation
 
Animation
AnimationAnimation
Animation
 
Image & Graphics
Image & GraphicsImage & Graphics
Image & Graphics
 
Multimedia And Animation
Multimedia And AnimationMultimedia And Animation
Multimedia And Animation
 

Similaire à D programming language

Introduction to D programming language at Weka.IO
Introduction to D programming language at Weka.IOIntroduction to D programming language at Weka.IO
Introduction to D programming language at Weka.IOLiran Zvibel
 
PERTEMUAN 1 - MENGENAL ENVIRONTMENT PROGRAM VISUAL C#.pptx
PERTEMUAN 1 - MENGENAL ENVIRONTMENT PROGRAM VISUAL C#.pptxPERTEMUAN 1 - MENGENAL ENVIRONTMENT PROGRAM VISUAL C#.pptx
PERTEMUAN 1 - MENGENAL ENVIRONTMENT PROGRAM VISUAL C#.pptxTriSandhikaJaya
 
Presentaion on Dart and Flutter Development.pptx
Presentaion on Dart and Flutter Development.pptxPresentaion on Dart and Flutter Development.pptx
Presentaion on Dart and Flutter Development.pptxnitesh213757
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesEelco Visser
 
Introduction to C++
Introduction to C++Introduction to C++
Introduction to C++Manoj Kumar
 
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...Sang Don Kim
 
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...Maarten Balliauw
 
All good things scale - ohs 2020 - 03.13.2020
All good things scale - ohs 2020 - 03.13.2020All good things scale - ohs 2020 - 03.13.2020
All good things scale - ohs 2020 - 03.13.2020Amanda Wozniak
 
Doxygen - Source Code Documentation Generator Tool
Doxygen -  Source Code Documentation Generator ToolDoxygen -  Source Code Documentation Generator Tool
Doxygen - Source Code Documentation Generator ToolGuo Albert
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010Satish Verma
 
Being Expressive in Code
Being Expressive in CodeBeing Expressive in Code
Being Expressive in CodeEamonn Boyle
 
270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.pptJoshCasas1
 

Similaire à D programming language (20)

Introduction to D programming language at Weka.IO
Introduction to D programming language at Weka.IOIntroduction to D programming language at Weka.IO
Introduction to D programming language at Weka.IO
 
PERTEMUAN 1 - MENGENAL ENVIRONTMENT PROGRAM VISUAL C#.pptx
PERTEMUAN 1 - MENGENAL ENVIRONTMENT PROGRAM VISUAL C#.pptxPERTEMUAN 1 - MENGENAL ENVIRONTMENT PROGRAM VISUAL C#.pptx
PERTEMUAN 1 - MENGENAL ENVIRONTMENT PROGRAM VISUAL C#.pptx
 
Golang
GolangGolang
Golang
 
Presentaion on Dart and Flutter Development.pptx
Presentaion on Dart and Flutter Development.pptxPresentaion on Dart and Flutter Development.pptx
Presentaion on Dart and Flutter Development.pptx
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific Languages
 
Introduction to c_sharp
Introduction to c_sharpIntroduction to c_sharp
Introduction to c_sharp
 
Introduction to C++
Introduction to C++Introduction to C++
Introduction to C++
 
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
 
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
 
All good things scale - ohs 2020 - 03.13.2020
All good things scale - ohs 2020 - 03.13.2020All good things scale - ohs 2020 - 03.13.2020
All good things scale - ohs 2020 - 03.13.2020
 
Doxygen - Source Code Documentation Generator Tool
Doxygen -  Source Code Documentation Generator ToolDoxygen -  Source Code Documentation Generator Tool
Doxygen - Source Code Documentation Generator Tool
 
Unit 2 ppt
Unit 2 pptUnit 2 ppt
Unit 2 ppt
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010
 
Presentation c++
Presentation c++Presentation c++
Presentation c++
 
E sampark with c#.net
E sampark with c#.netE sampark with c#.net
E sampark with c#.net
 
Software Engineering
Software EngineeringSoftware Engineering
Software Engineering
 
Being Expressive in Code
Being Expressive in CodeBeing Expressive in Code
Being Expressive in Code
 
Session 1 - c++ intro
Session   1 - c++ introSession   1 - c++ intro
Session 1 - c++ intro
 
270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt
 

Plus de Jordan Open Source Association

JOSA TechTalks - Machine Learning on Graph-Structured Data
JOSA TechTalks - Machine Learning on Graph-Structured DataJOSA TechTalks - Machine Learning on Graph-Structured Data
JOSA TechTalks - Machine Learning on Graph-Structured DataJordan Open Source Association
 
JOSA TechTalks - Word Embedding and Word2Vec Explained
JOSA TechTalks - Word Embedding and Word2Vec ExplainedJOSA TechTalks - Word Embedding and Word2Vec Explained
JOSA TechTalks - Word Embedding and Word2Vec ExplainedJordan Open Source Association
 
JOSA TechTalks - RESTful API Concepts and Best Practices
JOSA TechTalks - RESTful API Concepts and Best PracticesJOSA TechTalks - RESTful API Concepts and Best Practices
JOSA TechTalks - RESTful API Concepts and Best PracticesJordan Open Source Association
 

Plus de Jordan Open Source Association (20)

JOSA TechTalks - Data Oriented Architecture
JOSA TechTalks - Data Oriented ArchitectureJOSA TechTalks - Data Oriented Architecture
JOSA TechTalks - Data Oriented Architecture
 
JOSA TechTalks - Machine Learning on Graph-Structured Data
JOSA TechTalks - Machine Learning on Graph-Structured DataJOSA TechTalks - Machine Learning on Graph-Structured Data
JOSA TechTalks - Machine Learning on Graph-Structured Data
 
OpenSooq Mobile Infrastructure @ Scale
OpenSooq Mobile Infrastructure @ ScaleOpenSooq Mobile Infrastructure @ Scale
OpenSooq Mobile Infrastructure @ Scale
 
Data-Driven Digital Transformation
Data-Driven Digital TransformationData-Driven Digital Transformation
Data-Driven Digital Transformation
 
Data Science in Action
Data Science in ActionData Science in Action
Data Science in Action
 
Processing Arabic Text
Processing Arabic TextProcessing Arabic Text
Processing Arabic Text
 
JOSA TechTalks - Downgrade your Costs
JOSA TechTalks - Downgrade your CostsJOSA TechTalks - Downgrade your Costs
JOSA TechTalks - Downgrade your Costs
 
JOSA TechTalks - Docker in Production
JOSA TechTalks - Docker in ProductionJOSA TechTalks - Docker in Production
JOSA TechTalks - Docker in Production
 
JOSA TechTalks - Word Embedding and Word2Vec Explained
JOSA TechTalks - Word Embedding and Word2Vec ExplainedJOSA TechTalks - Word Embedding and Word2Vec Explained
JOSA TechTalks - Word Embedding and Word2Vec Explained
 
JOSA TechTalks - Better Web Apps with React and Redux
JOSA TechTalks - Better Web Apps with React and ReduxJOSA TechTalks - Better Web Apps with React and Redux
JOSA TechTalks - Better Web Apps with React and Redux
 
JOSA TechTalks - RESTful API Concepts and Best Practices
JOSA TechTalks - RESTful API Concepts and Best PracticesJOSA TechTalks - RESTful API Concepts and Best Practices
JOSA TechTalks - RESTful API Concepts and Best Practices
 
Web app architecture
Web app architectureWeb app architecture
Web app architecture
 
Intro to the Principles of Graphic Design
Intro to the Principles of Graphic DesignIntro to the Principles of Graphic Design
Intro to the Principles of Graphic Design
 
Intro to Graphic Design Elements
Intro to Graphic Design ElementsIntro to Graphic Design Elements
Intro to Graphic Design Elements
 
JOSA TechTalk: Realtime monitoring and alerts
JOSA TechTalk: Realtime monitoring and alerts JOSA TechTalk: Realtime monitoring and alerts
JOSA TechTalk: Realtime monitoring and alerts
 
JOSA TechTalk: Metadata Management
in Big Data
JOSA TechTalk: Metadata Management
in Big DataJOSA TechTalk: Metadata Management
in Big Data
JOSA TechTalk: Metadata Management
in Big Data
 
JOSA TechTalk: Introduction to Supervised Learning
JOSA TechTalk: Introduction to Supervised LearningJOSA TechTalk: Introduction to Supervised Learning
JOSA TechTalk: Introduction to Supervised Learning
 
JOSA TechTalk: Taking Docker to Production
JOSA TechTalk: Taking Docker to ProductionJOSA TechTalk: Taking Docker to Production
JOSA TechTalk: Taking Docker to Production
 
JOSA TechTalk: Introduction to docker
JOSA TechTalk: Introduction to dockerJOSA TechTalk: Introduction to docker
JOSA TechTalk: Introduction to docker
 
A taste of Functional Programming
A taste of Functional ProgrammingA taste of Functional Programming
A taste of Functional Programming
 

Dernier

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 

Dernier (20)

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 

D programming language