software development with c++

21
Mark Slater Matt Williams Software Development with C++ Tom Latham Ben Morgan Luke Kreczko 1

Upload: others

Post on 03-Nov-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Software Development with C++

Mark Slater Matt Williams

Software Development with C++Tom Latham Ben Morgan

Luke Kreczko

1

Page 2: Software Development with C++

Programming is in top 5 most useful skills gained by PhDs

2

Page 3: Software Development with C++

“48% were employed in universities...” - STFC PhD Careers

3

Page 4: Software Development with C++

Develop a command line application using the C++ programming language to encrypt/decrypt simple text messages using classical ciphers.

Our Aim: “mpags-cipher”

4

Page 5: Software Development with C++

Requirements• Read Plaintext from Keyboard or File

• User select of Cipher, Key and whether to Encrypt/Decrypt

• Provide Encryption/Decryption via

• Caesar Cipher

• Playfair Cipher

• Vigenere Cipher

• Write cipher text to Screen or File5

Page 6: Software Development with C++

“The world is built on C and C++, did you know that?” - Herb Sutter

6

Page 7: Software Development with C++

“Not Your Parents’ C++” - Herb Sutter

C++11auto i = v.begin();

regex

constexpr

nullptr

initializer lists

for(x : collection)

std::shared_ptr<T>,std::unique_ptr<T>,std::weak_ptr<T>

[]{foo();}lambdas

7

Page 8: Software Development with C++

“Your Parents’ C++” - Still much existing code

C++11auto i = v.begin();

regex

constexpr

nullptr

initializer lists

for(x : collection)

shared_ptr<T>,unique_ptr<T>,weak_ptr<T>

[]{foo();}lambdas

988

Page 9: Software Development with C++

C++11auto i = v.begin();

regex

constexpr

nullptr

initializer lists

for(x : collection)

shared_ptr<T>,unique_ptr<T>,weak_ptr<T>

[]{foo();}lambdas

14[](auto x){foo(x);}

generic lambdas

auto myFunc();

binary literals

deduced return types

auto bin = 0b0100;digit separatorsauto i = 1’000;

9

Page 10: Software Development with C++

C++11auto i = v.begin();

regex

constexpr

nullptr

initializer lists

for(x : collection)

shared_ptr<T>,unique_ptr<T>,weak_ptr<T>

[]{foo();}lambdas

17std::string_view

string views

std::filesystemstructured bindings

filesystem operations

auto [ first, second ] = myPair;

10parallel algorithms

Page 11: Software Development with C++

C++11auto i = v.begin();

regex

constexpr

nullptr

initializer lists

for(x : collection)

shared_ptr<T>,unique_ptr<T>,weak_ptr<T>

[]{foo();}lambdas

20std::numbers::pi

mathematical constants

myMap.contains(2);

concepts

associative contains

std::movablestd::floating_point

using enum11

Page 12: Software Development with C++

C++ Programming Stream

1. Procedural C++

2. Procedural C++ 2

3. Object Oriented C++ 1

4. Generic C++ and the STL

5. Object Oriented C++ 2

int main(int argc, char *argv[]){ FooCalculator foo; int result = foo.calculate(); return 0;}

int main(int argc, char *argv[]){ int result = calculate_foo(); return 0;}

12

Page 14: Software Development with C++

C++ Online Resources

Programmers Q&A

14

Page 15: Software Development with C++

“If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.” – Gerald Weinberg

Image © 2012 BirdsFlight: http://birdsflight.com/terms/15

Page 16: Software Development with C++

“A good worker is known by their tools” - English Proverb

16

Page 17: Software Development with C++

1. Storing code and changes (Git)

2. Automating builds (Compiler/CMake)

3. Testing (CMake/Catch)

4. Documenting code and programs (Doxygen)

5. Software Design

17Software Development Stream

Page 19: Software Development with C++

Software Development Online Resources

Developer Q&A

19

Page 20: Software Development with C++

Getting Started 20

Page 21: Software Development with C++

$ mpags-cipher --help > questions? > comments?

21