SlideShare a Scribd company logo
42by Andrew Petryk
Whoami
andrew.petryk@gmail.com
@ipreferespresso
https://github.com/andyislegend
http://corevalue.net/
http://ukraine.cursor.education/
Java Software Engineer @ CoreValue Services
Lecturer @ Cursor Education
2
Everything described here is true and complete to the best of author’s knowledge.
All recommendations and inferences are made without guarantee on the part of author
and have no connection to official CoreValue or Cursor Education opinion.
The author, CoreValue and Cursor Education disclaim any liability in connection with the
use of this information.
3
4
5
6
7Image src: https://giphy.com/
8
If you have to explain a meme,
it’s a bad meme
9
If you have to explain a code,
it’s a bad code
10Image src: https://cdn.hackaday.io/images/9748691486852957240.png
TOOLS
11
12Image src: https://giphy.com/
13Image src: http://www.arqueoegipto.net/wp-content/uploads/2016/08/faraones-egipcios-reducido.png
EGYPTIANS
14Image src: http://rintala-allusions.weebly.com/uploads/1/1/7/2/11729930/828956738.gif
GREEKS
15Image src: https://pixabay.com/p-151088/?no_redirect
ROMANS
16image src: https://dionly1.wordpress.com/2012/04/26/confusius-kumpulan-kata-kata-bijak-2/confucius-cartoon/
CHINESE
BUT ALL OF THESE SYSTEMS
MISSED SOMETHING
17
18Image src: https://giphy.com/
FROM ADDICTIVE
TO POSITIONAL
19
20
HINDU-ARABIC
2, 10, 12, 60
21
BASE
22
23
BINARY
Gottfried Leibniz
24Image src: Christoph Bernhard Francke - Herzog Anton Ulrich-Museum, online, https://commons.wikimedia.org/w/index.php?curid=53159699
Let’s convert 21 to binary
25
GORNER’S TRANSFORMATION
21/2 = 10 +1
26
GORNER’S TRANSFORMATION
21/2 = 10 +1
10/2 = 5 +0
27
GORNER’S TRANSFORMATION
21/2 = 10 +1
10/2 = 5 +0
5/2 = 2 +1
28
GORNER’S TRANSFORMATION
21/2 = 10 +1
10/2 = 5 +0
5/2 = 2 +1
2/2 = 1 +0
29
GORNER’S TRANSFORMATION
21/2 = 10 +1
10/2 = 5 +0
5/2 = 2 +1
2/2 = 1 +0
1/2 = 0 +1
30
GORNER’S TRANSFORMATION
21/2 = 10 +1
10/2 = 5 +0
5/2 = 2 +1
2/2 = 1 +0
1/2 = 0 +1
31
GORNER’S TRANSFORMATION
21 = 10101
32
GORNER’S TRANSFORMATION
33
3.1415
DECIMAL POINT
34
Unit
3.1415
DECIMAL POINT
35
Unit
3.1415
Decimal Point
DECIMAL POINT
36
Unit
3.1415
Decimal Point
Mantissa
DECIMAL POINT
PROBLEMS
37
2,048
OR
2.048
38
39
40
41
BUT SUDDENLY
42image src: https://slaymyboredom.files.wordpress.com/2012/02/calc-fail.jpg
43Image src: https://giphy.com/
Integer
There are various languages where int32* is represented in one of its forms
44
*under Int32 means 32-bit signed integer.
TYPES
Integer
There are various languages where int32* is represented in one of its forms
45
*under Int32 means 32-bit signed integer.
BUT, what if I told You that given int32 is WRONG**?
**under Wrong means mathematically incorrect.
TYPES
Int32 + Int32 = ?
Int32 * Int32 = ?
46
Int32 + Int32 = Int32
Int32 * Int32 = Int32
47
*for Java
Int32 + Int32 = Int32
Int32 * Int32 = Int32
48
*for Java *correct
Int33
Int63
49Image src: https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/Ariane_5_Le_Bourget_FRA_001.jpg/270px-Ariane_5_Le_Bourget_FRA_001.jpg
ARIANE-5
the original program was written in
50
let’s re-write it into
51
52
53Image src: https://giphy.com/
54
0/0
What should happen?
A ZERO PROBLEM
0/0
55
machine burns in Java/Scala (Arithmetical Exception)
Image src: https://giphy.com/
A ZERO PROBLEM
0/0
56
undefined (NaN) in JS or Haskell
Image src: https://giphy.com/
A ZERO PROBLEM
0/0
57
1? n/n == 1
Image src: https://giphy.com/
A ZERO PROBLEM
0/0
58
null?
Image src: https://giphy.com/
A ZERO PROBLEM
59
MORE FUN WITH JVM
60
MORE FUN WITH JVM
61
MORE FUN WITH JVM
62
MORE FUN WITH JVM
63
MORE FUN WITH JVM
64
MORE FUN WITH JVM
65
MORE FUN WITH JVM
66
EVEN MORE FUN WITH JS
alert(0.1 + 0.2 == 0.3); false
alert(0.1.toFixed(20)); 0.10000000000000000555
alert(9999999999999999); 10000000000000000
BUT WHY SO MUCH WEIRD STUFF?
67Image src: https://giphy.com/
IEE - Institute of Electrical and Electronics Engineers
William Kahan
68Image src: George M. Bergman - http://owpdb.mfo.de/detail?photo_id=13645
IEE754
DEC vs. Intel
VAX vs. K-C-S
69
1976
70
The standard defines:
• Arithmetic formats.
71
The standard defines:
• Arithmetic formats.
• Interchange formats.
72
The standard defines:
• Arithmetic formats.
• Interchange formats.
• floating-point efficient and compact rounding rules.
73
The standard defines:
• Arithmetic formats.
• Interchange formats.
• floating-point efficient and compact rounding rules.
• Operations.
74
The standard defines:
n ÷ ±Infinity 0
±Infinity × ±Infinity ±Infinity
±nonzero ÷ 0 ±Infinity
Infinity + Infinity Infinity
±0 ÷ ±0 NaN
Infinity - Infinity NaN
±Infinity ÷ ±Infinity NaN
±Infinity × 0 NaN
75
Operation Result
76
Debates about standard: Wiki about standard:
77Image src: https://i.pinimg.com/564x/0d/eb/c3/0debc30a6f196246e691cad2f12cc617--computer-engineering-computer-science.jpg
78
Image src: https://www.iphones.ru/wp-content/uploads/2013/12/itunes-radio-1.jpg
iTunes SHUFFLE PROBLEM
79
BUISNESS SCIENCE
PROGRAMMING MATH
ROUGHLY
NOT A SINGLE LINE
OF CODE IN THE WORLD DOES
80Image src: https://giphy.com/
81
For a number of years I have been familiar
with the observation that the quality of
programmers is a decreasing function of the
density of go to statements in the programs
they produce.
Edsger W.
Dijkstra
Go To Statement Considered Harmful
src: http://www.u.arizona.edu/~rubinson/copyright_violations/Go_To_Considered_Harmful.html
82
If a software is a craft,
then %language% is an art
83
Software is already
eating the world
Be a
%languageName%
WILLIAM WALLACE
84Image src: https://giphy.com/
Hammered screw holds better then
nail twisted with a screwdriver
@alcovictor
85
Victor Polischuk aka @alkovictor: https://twitter.com/alkovictor
86Image src: https://giphy.com/

More Related Content

Similar to 42

Testing, Learning and Professionalism — 20171214
Testing, Learning and Professionalism — 20171214Testing, Learning and Professionalism — 20171214
Testing, Learning and Professionalism — 20171214
David Rodenas
 
implementation of area efficient high speed eddr architecture
implementation of area efficient high speed eddr architectureimplementation of area efficient high speed eddr architecture
implementation of area efficient high speed eddr architecture
Kumar Goud
 
Icom4015 lecture3-f17
Icom4015 lecture3-f17Icom4015 lecture3-f17
Icom4015 lecture3-f17
BienvenidoVelezUPR
 
Ceis101 final joshua_brown
Ceis101 final joshua_brownCeis101 final joshua_brown
Ceis101 final joshua_brown
JoshuaBrown233
 
Experiences in Digital Circuit Design Courses: A Self-Study Platform for Lear...
Experiences in Digital Circuit Design Courses: A Self-Study Platform for Lear...Experiences in Digital Circuit Design Courses: A Self-Study Platform for Lear...
Experiences in Digital Circuit Design Courses: A Self-Study Platform for Lear...
UOC Universitat Oberta de Catalunya
 
IEEE College of Technology MAES SE 2020 - Coding Fun
IEEE College of Technology MAES SE 2020 - Coding FunIEEE College of Technology MAES SE 2020 - Coding Fun
IEEE College of Technology MAES SE 2020 - Coding Fun
MadelenReyes
 
“High-fidelity Conversion of Floating-point Networks for Low-precision Infere...
“High-fidelity Conversion of Floating-point Networks for Low-precision Infere...“High-fidelity Conversion of Floating-point Networks for Low-precision Infere...
“High-fidelity Conversion of Floating-point Networks for Low-precision Infere...
Edge AI and Vision Alliance
 
DESIGN OF LOW POWER MULTIPLIER
DESIGN OF LOW POWER MULTIPLIERDESIGN OF LOW POWER MULTIPLIER
DESIGN OF LOW POWER MULTIPLIER
IRJET Journal
 
Performance #5 cpu and battery
Performance #5  cpu and batteryPerformance #5  cpu and battery
Performance #5 cpu and battery
Vitali Pekelis
 
Vulnerabilities of machine learning infrastructure
Vulnerabilities of machine learning infrastructureVulnerabilities of machine learning infrastructure
Vulnerabilities of machine learning infrastructure
Sergey Gordeychik
 
Lab manual of Digital image processing using python by khalid Shaikh
Lab manual of Digital image processing using python by khalid ShaikhLab manual of Digital image processing using python by khalid Shaikh
Lab manual of Digital image processing using python by khalid Shaikh
khalidsheikh24
 
Engine Terminology
Engine TerminologyEngine Terminology
Engine Terminology
raimondklavins
 
Y1 gd engine_terminology
Y1 gd engine_terminologyY1 gd engine_terminology
Y1 gd engine_terminology
colinecclesdockerty
 
Accord.Net: Looking for a Bug that Could Help Machines Conquer Humankind
Accord.Net: Looking for a Bug that Could Help Machines Conquer HumankindAccord.Net: Looking for a Bug that Could Help Machines Conquer Humankind
Accord.Net: Looking for a Bug that Could Help Machines Conquer Humankind
PVS-Studio
 
Deep Neural Networks for Computer Vision
Deep Neural Networks for Computer VisionDeep Neural Networks for Computer Vision
Deep Neural Networks for Computer Vision
Alex Conway
 
Comparison of Invisible Digital Watermarking Techniques for its Robustness
Comparison of Invisible Digital Watermarking Techniques for its RobustnessComparison of Invisible Digital Watermarking Techniques for its Robustness
Comparison of Invisible Digital Watermarking Techniques for its Robustness
IRJET Journal
 
Week2- Deep Learning Intuition.pptx
Week2- Deep Learning Intuition.pptxWeek2- Deep Learning Intuition.pptx
Week2- Deep Learning Intuition.pptx
fahmi324663
 
Georgy Nosenko - An introduction to the use SMT solvers for software security
Georgy Nosenko - An introduction to the use SMT solvers for software securityGeorgy Nosenko - An introduction to the use SMT solvers for software security
Georgy Nosenko - An introduction to the use SMT solvers for software securityDefconRussia
 
Fake Video Creation and Detection: A Review
Fake Video Creation and Detection: A ReviewFake Video Creation and Detection: A Review
Fake Video Creation and Detection: A Review
IRJET Journal
 

Similar to 42 (20)

Testing, Learning and Professionalism — 20171214
Testing, Learning and Professionalism — 20171214Testing, Learning and Professionalism — 20171214
Testing, Learning and Professionalism — 20171214
 
implementation of area efficient high speed eddr architecture
implementation of area efficient high speed eddr architectureimplementation of area efficient high speed eddr architecture
implementation of area efficient high speed eddr architecture
 
Icom4015 lecture3-f17
Icom4015 lecture3-f17Icom4015 lecture3-f17
Icom4015 lecture3-f17
 
Ceis101 final joshua_brown
Ceis101 final joshua_brownCeis101 final joshua_brown
Ceis101 final joshua_brown
 
Experiences in Digital Circuit Design Courses: A Self-Study Platform for Lear...
Experiences in Digital Circuit Design Courses: A Self-Study Platform for Lear...Experiences in Digital Circuit Design Courses: A Self-Study Platform for Lear...
Experiences in Digital Circuit Design Courses: A Self-Study Platform for Lear...
 
IEEE College of Technology MAES SE 2020 - Coding Fun
IEEE College of Technology MAES SE 2020 - Coding FunIEEE College of Technology MAES SE 2020 - Coding Fun
IEEE College of Technology MAES SE 2020 - Coding Fun
 
“High-fidelity Conversion of Floating-point Networks for Low-precision Infere...
“High-fidelity Conversion of Floating-point Networks for Low-precision Infere...“High-fidelity Conversion of Floating-point Networks for Low-precision Infere...
“High-fidelity Conversion of Floating-point Networks for Low-precision Infere...
 
DESIGN OF LOW POWER MULTIPLIER
DESIGN OF LOW POWER MULTIPLIERDESIGN OF LOW POWER MULTIPLIER
DESIGN OF LOW POWER MULTIPLIER
 
Performance #5 cpu and battery
Performance #5  cpu and batteryPerformance #5  cpu and battery
Performance #5 cpu and battery
 
Vulnerabilities of machine learning infrastructure
Vulnerabilities of machine learning infrastructureVulnerabilities of machine learning infrastructure
Vulnerabilities of machine learning infrastructure
 
Lab manual of Digital image processing using python by khalid Shaikh
Lab manual of Digital image processing using python by khalid ShaikhLab manual of Digital image processing using python by khalid Shaikh
Lab manual of Digital image processing using python by khalid Shaikh
 
Engine Terminology
Engine TerminologyEngine Terminology
Engine Terminology
 
Y1 gd engine_terminology
Y1 gd engine_terminologyY1 gd engine_terminology
Y1 gd engine_terminology
 
Accord.Net: Looking for a Bug that Could Help Machines Conquer Humankind
Accord.Net: Looking for a Bug that Could Help Machines Conquer HumankindAccord.Net: Looking for a Bug that Could Help Machines Conquer Humankind
Accord.Net: Looking for a Bug that Could Help Machines Conquer Humankind
 
Deep Neural Networks for Computer Vision
Deep Neural Networks for Computer VisionDeep Neural Networks for Computer Vision
Deep Neural Networks for Computer Vision
 
Comparison of Invisible Digital Watermarking Techniques for its Robustness
Comparison of Invisible Digital Watermarking Techniques for its RobustnessComparison of Invisible Digital Watermarking Techniques for its Robustness
Comparison of Invisible Digital Watermarking Techniques for its Robustness
 
Week2- Deep Learning Intuition.pptx
Week2- Deep Learning Intuition.pptxWeek2- Deep Learning Intuition.pptx
Week2- Deep Learning Intuition.pptx
 
Georgy Nosenko - An introduction to the use SMT solvers for software security
Georgy Nosenko - An introduction to the use SMT solvers for software securityGeorgy Nosenko - An introduction to the use SMT solvers for software security
Georgy Nosenko - An introduction to the use SMT solvers for software security
 
Quiz
QuizQuiz
Quiz
 
Fake Video Creation and Detection: A Review
Fake Video Creation and Detection: A ReviewFake Video Creation and Detection: A Review
Fake Video Creation and Detection: A Review
 

Recently uploaded

By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 

Recently uploaded (20)

By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 

42

Editor's Notes

  1. Хто такий я?
  2. Дефолтний слайд, можна не читати – в 2х словах тут написано, що якби ви раптом вирішили робити якісь посилання на цю доповідь чи слайди – ви це робите на власний страх і ризик. Ні компанія CoreValue ні CursorEducation, навіть автор не беруть на себе жодної відповідальності стосовно істини в останній інстанції. Грубо кажучи – довіряй, але провіряй.
  3. Хто знає хто це? Таке собі питання, адже тут і так це написано) Ніколас Франкель - якщо ви щось шукали відносно Java || Spring на StackOwerflof то скоріш за все отримували відповідь оцього чувака. Ну і загалом в нього багато крутих доповідей - рекомендую
  4. Так от. Не так давно (+- на початку листопада 2017) він у своєму блозі виклав СВІЙ підхід до написання кінотів і публічних виступів, і оскільки ця презентація якраз в той самий час і писалась я не міг на це не звернути увагу
  5. Одним з пунктів - не використовувати гіфки взагалі або обмежити їх тривалість/кількість. І тут я такий …
  6. Хммм ? Як то без гіфок? В гіфок і мемів багато спільного з програмуванням, хто б міг подумати)
  7. Тому ми спробуємо спростувати це! Меми і гіфки кращий друг презентації =)
  8. Це був короткий ліричний відступ, тепер повернімось до презентації. Великий Думач (Big Though) - суперкомпютер Питання життя, всесвіту і взагалі Відповідь 42. А яке ж питання Компютер може обрахувати і зробити практично що завгодно. В усіх сферах життя людини. І робить він це всього-лиш маніпулюючи ЧИСЛАМИ! Тому давай поговоримо про числа більш докладніше…
  9. Давним-давно наші з вами предки жили високо на деревах і мали руки і пальці як основне знаряддя добування їжі. Як не дивно – в нашій історії все починається з пальців. Та потім клімат різко змінився і людині довелось злізти з дерева і взяти в руку палицю щоб полювати на мамонта. Розвиток і еволюція робили знаряддя праці і спосіб добування їжі дедалі складнішим, а людське суспільство все більшим і більшим – з сімей воно переросло в общини, з общин в племена, з племен в народи. І на певному етапі розвитку людини в нас виникла гостра необхідність все впорядкувати і …
  10. Порахувати. Так з'являються лічба і писемність – 2 ключових винаходи які зробили нас нами.
  11. Одними з перших кому пальців стало замало були древні єгиптяни. Їх система була доволі проста, проте ефективна як на той час.
  12. Ключем тогочасного прогресу була торгівля - переважно морем - і лідерами регіону того часу були фінікійці (жили на території сучасного Лівану). Вони і привезли єгипетську систему грекам, а ті її модифікували і допрацювали – вони присвоїли цифри відповідно до літер у їх абетці
  13. Римлянам ж здалось що грецька система занадто складна і недостатньо гнучка, тому вони вирішили придумати свою яка б відповідала вимогам тодішніх математиків і науковців
  14. Приблизно в той самий час на територіях сьогоднішнього Китаю відбувалось дещо зовсім відмінне. Тодішні китайці придумали систему знаків які при різній компоновці між собою складались у інше число
  15. Проте усім цим системам бракувало гнучкості і абстрактності (навряд чи хтось в той час насправді оперував таким поняттям=))) і крім всього іншого там не було дечого надзвичайно важливого... Чого?
  16. 0 звісно
  17. В той час сталось переломне для всього людства відкриття на території сучасної Індії. Тогочасні математики прийшли до поняття відсутності чогось як дуже важливого у математиці і науці загалом. Крім того вони змогли перейти від адитивної системи до позиційної
  18. в залежності від позицій чисел утворювалось нове число, і чим більше було позиційних чисел тим більшим число було. Фактично ми можемо розкласти будь-яке число в лінійний ряд і перемножити його на 10 в степені його позиції щоб знати його порядковість.
  19. Основа числення: 1) двійкова (про неї згодом) 2) десяткова (використовується повсюдно, порахували пальці на руках) 3) була основа в 20 (інки порахували пальці не тільки на руках, а й на ногах) 4) основа в 12 (приклади) 5) основа в 60
  20. Дещо цікаве про те як в кола з'явились 360 градусів. Придумали це в древній Месопотамії. Вавилоняни були вкрай вправними астрономами і у своїх спостереженнях вони з'ясували що в коло ідеально можна вписати пентагон
  21. який ідеально ділиться на 6 рівносторонніх трикутників де довжина сторони це радіус, а оскільки за базу числення у них було 60 то і кут кожного такого трикутника був 60. нескладні калькуляції: 6 х 60 = 360.
  22. Математика розвивалась і в один момент ми прийшли до ідеї двійкової системи (а конкретно до неї за допомогою праць Томаса Буля прийшов Готтфрід Лейбніц, ось власне він на картинці і є) І от комусь в голову прийшла геніальна ідея - стан транзистора вкл/викл передавати через 1 і 0 відповідно. І так числа плавно зайшли в еру компютерних технологій як цілком природнє і невід'ємне від індустрії.
  23. Множина цілих чисел нескінченна, але ми завжди можемо підібрати таке число біт, щоб представити будь-яке ціле число, що виникає при вирішенні конкретної задачі. Давайте спробуємо в простий спосіб трансформувати число 21 у бінарне його представлення. Для цього застосуємо трансформацію Горнера
  24. У далекі часи, для IT-індустрії це 70-ті роки минулого століття, вчені-математики (так раніше називалися програмісти) билися як Дон-Кіхоти в нерівному бою з комп'ютерами, які тоді були розміром з маленькі вітряки. Завдання ставилися серйозні: пошук ворожих підводних човнів в океані по знімках з орбіти, розрахунок балістики ракет дальньої дії, і інше. Для їх вирішення комп'ютер повинен оперувати дійсними числами, яких, як відомо, континуум, тоді як пам'ять кінцева. Тому доводиться відображати цей континуум на закінчувану кількість нулів і одиниць. У пошуках компромісу між швидкістю, розміром і точністю уявлення вчені запропонували числа з плаваючою комою. Множина дійсних чисел не тільки нескінченна, але ще і безперервна, тому, скільки б ми не взяли біт, ми неминуче зіткнемося з числами, які не мають точного представлення. Числа з плаваючою точкою - один з можливих способів представлення дійсних чисел, який є компромісом між точністю і діапазоном прийнятих значень.
  25. Число з плаваючою точкою складається з набору окремих розрядів, умовно розділених на знак, експоненту (порядок) і мантису. Порядок і мантиса - цілі числа, які разом зі знаком дають представленя числа з плаваючою комою в наступному вигляді:
  26. Мантиса Поки все здається просто і чудово, але потім з'являються вони …
  27. Проблеми! Виявляється зааплаїти математику і числа для комп'ютера не така вже і тривіальна задача…
  28. Не те щоб основна проблема математики, але наявність у 2017 двох варіантів запису нецілих чисел викликає подив (ну принаймні в мене). Думаю рано чи пізно дана проблема буде вирішена в користь нижнього варіанту – адже ним користується ваш компютер.
  29. У зв'язку з тим що нуль він таке особливе число – ми отримуємо от таку з точки математики єресь (ну принаймні в с-подібних мовах), позитивний і негативний 0, все через складність запису нецілих чисел у двійковому представлені.
  30. Строга типізація звичайно виграла у нетипізованих мов, але тим не менше типи не завжди корисні, от як тут. Метод “індексОф” не може повернути нічого іншого крім інта, і навіть коли шуканого елемента немає він не повертає null (хоча вочевидь міг), нам повертається -1. Дуже транспарантно.
  31. Ну і вишенькою на торті
  32. Хтось може висловити припущення – як так?
  33. Неправильний з точки зору математики звісно
  34. Хтось чув історію про Аріан-5? Аріан 5 (фр. Ariane 5) — одноразова європейська ракета-носій сімейства Аріан, призначена для виведення корисного навантаження на низьку опорну орбіту (LEO) або геоперехідну орбіту (ГПО). Проект підтримується Європейським космічним агентством (ЄКА), основний підрядник — European Astrium Space Transportation (EADS). Ракета просувається на ринку компанією Аріанеспас. Запуски відбуваються з космодрому Куру у Французькій Гвіані. РН Аріан 5 є основною ракетою-носієм ЄКА і була такою принаймні до 2015. Перший випробувальний політ РН відбувся 4 червня 1996 року і був невдалим. РН був підірваний на 34 секунді польоту через несправність в куруючому програмному забезпеченні.
  35. Конвертація даних з 64-х розрядного числа з плаваючою комою у 16-ти розрядне призвела до зависання комп'ютера. Процедура на мові Ада, яка оброблювала цю виключну ситуацію, була вилучена з міркувань збереження продуктивності системи. Дана комп'ютерна помилка вважається найдорожчою у історії ІТ індустрії…
  36. Вона коштувала близько 500 мільйонів доларів США. Всі пишуть баги =)
  37. Іншою великою проблемою застосування математики і чисел в комп'ютерах, є проблема ділення на 0. Жоден математик в здоровому глузді на нуль ділити не стане – бо так неможна ж. Але для машини така операції абсолютно нормальна і може трапитись легко. То що робити в таких випадках?
  38. Як бачите – одностайного підходу до вирішення цієї проблеми в мовах програмування немає і досі
  39. Давайте трошки порозважаємось з віртуальною машиною Джави (все таки джава для мене мейн технологія., то я розважатись на ній)
  40. Чого стільки конфузів і невідповідності і що з тим робити? Давайте трохи відмотаємось назад, у 60-ті У 60-е і 70-ті роки не було єдиного стандарту представлення чисел з плаваючою комою, способів округлення, арифметичних операцій. В результаті програми були вкрай не портабельні. Але ще більшою проблемою було те, що у різних комп'ютерів були свої «дивацтва» і їх потрібно було знати і враховувати в програмі. Наприклад, різниця двох не рівних чисел повертала нуль. В результаті вираз «X = Y» і «X-Y = 0» вступали в протиріччя. Умільці обходили цю проблему дуже хитрими трюками, наприклад, робили присвоювання «X = (X-X) + X» перед операціями множення і ділення, щоб уникнути проблем.
  41. Ініціатива створити єдиний стандарт для представлення чисел з плаваючою точкою підозріло співпала зі спробами в 1976 році компанією Intel розробити «кращу» арифметику для нових співпроцесорів до 8086 і i432. За розробку взялися вчені - кити в цій області, проф. Джон Палмер і Вільям Кехен. Останній у своєму інтерв'ю висловив думку, що серйозність, з якою Intel розробляла свою арифметику, змусила інші компанії об'єднатися і почати процес стандартизації.
  42. Всі були налаштовані серйозно, адже дуже вигідно просунути свою архітектуру і зробити її стандартної. Свої пропозиції представили компанії DEC, National Superconductor, Zilog, Motorola. Виробники мейнфреймів Cray і IBM спостерігали. Компанія Intel, зрозуміло, теж представила свою нову арифметику. Авторами запропонованої специфікації стали Вільям Кехен, Джеромі Кунен і Гарольд Стоун і їх пропозицію відразу прозвали «K-C-S».Практично відразу ж були відкинуті всі пропозиції, крім двох: VAX від DEC і «K-C-S» від Intel. Специфікація VAX була значно простішою, вже була реалізована в комп'ютерах PDP-11, і було зрозуміло, як на ній отримати максимальну продуктивність. З іншого боку в «K-C-S» містилося багато корисної функціональності, такої як «спеціальні» і «денормалізовані» числа. У «K-C-S» всі арифметичні алгоритми задані строго і потрібно, щоб в реалізації результат з ними збігався. Це дозволяє виводити строгі викладки в рамках цієї специфікації. Якщо раніше математик вирішував завдання чисельними методами і доводив властивості свого рішення, не було ніякої гарантії, що ці властивості збережуться в програмі. Строгість арифметики «K-C-S» дозволила доведення теорем, спираючись на арифметику з плаваючою точкою. Компанія DEC зробила все, щоб її специфікацію зробили стандартом. Вона навіть заручилася підтримкою деяких авторитетних вчених в тому, що арифметика «K-C-S» в принципі не може досягти такої ж продуктивності, як у DEC. Іронія в тому, що Intel знала, як зробити свою специфікацію такою ж продуктивною, але ці хитрощі були комерційною таємницею. Якби Intel не поступилася і не відкрила частину секретів, вона б не змогла стримати натиск DEC.
  43. І із всіх цих людей реальною відмазка тільки в останніх трьох.
  44. Apple довелось замінити реальний рандом на ПСЕВДОрандом!