This document provides an introduction and overview of Andrew Petryk, including his contact information and background as a Java Software Engineer and lecturer. It discusses ensuring information is complete and disclaims liability. It then covers a range of topics in software engineering and computer science, including programming paradigms and languages, data types, binary number systems, floating point numbers, and more.
Nowadays, CPU microarchitecture is concealed from developers by compilers, VMs, etc. Do Java developers need to know microarchitecture details of modern processors? Or, does it like to learn quantum mechanics for cooking? Are Java developers safe from leaking low-level microarchitecture details into high level application performance behaviour? We will try to answer these questions by analyzing several Java example.
A Hybrid DWT-SVD Method for Digital Video Watermarking Using Random Frame Sel...researchinventy
Digital watermarking refers to embedding watermarks in a multimedia documents and files in order to protect them from illegal copying and identifying manipulations. We proposed a technique is Hybrid DWTSVD method for digital video watermarking. This paper presents a robust and secure watermarking algorithm for video sequence. Proposed scheme divide the video in to frames and then blue channel is used for watermarking insertion. Discrete wavelet transform is used for watermark embedding. Watermark is inserted in to mid frequency component for better resistance to video manipulation operation. PSNR and MSE are computed for testing the proposed method
Everyone knows about TDD nowadays, but do you feel you are spending more time testing than writing code ? Where is the point where tests become an impediment to the evolution of your project ?
Instead of taking a religious approach to TDD (""you MUST ..."", ""good developers DO ...."", ""have you read the book XYZ on ..."") this is more a professional perspective, looking at how provide value using TDD as a powerful tool to focus on value and reducing waste.
Mockist TDD has lead software to a even higher level of complexity, up to the point where looking at the tests lead to a much higher confusion rather than just reading the code.
We will go through the TDD-related problem and real-life experiences in a very interactive talk, with a common goal to see what we can do now to make our tests more a tool for a better code rather than a karma for our development working life.
Analyzing the Blender project with PVS-StudioPVS-Studio
We go on analyzing open source projects and making the software world better. This time we have checked the Blender 2.62 package intended for creating 3D computer graphics.
Nowadays, CPU microarchitecture is concealed from developers by compilers, VMs, etc. Do Java developers need to know microarchitecture details of modern processors? Or, does it like to learn quantum mechanics for cooking? Are Java developers safe from leaking low-level microarchitecture details into high level application performance behaviour? We will try to answer these questions by analyzing several Java example.
A Hybrid DWT-SVD Method for Digital Video Watermarking Using Random Frame Sel...researchinventy
Digital watermarking refers to embedding watermarks in a multimedia documents and files in order to protect them from illegal copying and identifying manipulations. We proposed a technique is Hybrid DWTSVD method for digital video watermarking. This paper presents a robust and secure watermarking algorithm for video sequence. Proposed scheme divide the video in to frames and then blue channel is used for watermarking insertion. Discrete wavelet transform is used for watermark embedding. Watermark is inserted in to mid frequency component for better resistance to video manipulation operation. PSNR and MSE are computed for testing the proposed method
Everyone knows about TDD nowadays, but do you feel you are spending more time testing than writing code ? Where is the point where tests become an impediment to the evolution of your project ?
Instead of taking a religious approach to TDD (""you MUST ..."", ""good developers DO ...."", ""have you read the book XYZ on ..."") this is more a professional perspective, looking at how provide value using TDD as a powerful tool to focus on value and reducing waste.
Mockist TDD has lead software to a even higher level of complexity, up to the point where looking at the tests lead to a much higher confusion rather than just reading the code.
We will go through the TDD-related problem and real-life experiences in a very interactive talk, with a common goal to see what we can do now to make our tests more a tool for a better code rather than a karma for our development working life.
Analyzing the Blender project with PVS-StudioPVS-Studio
We go on analyzing open source projects and making the software world better. This time we have checked the Blender 2.62 package intended for creating 3D computer graphics.
Testing, Learning and Professionalism — 20171214David Rodenas
Two hours talk about testing, its history, its meaning and propose, a small guide of good practices, and what it is supposed to be a good professional and what is expected from us the professionals.
implementation of area efficient high speed eddr architectureKumar Goud
Abstract-This project presents an EDDR design, based on the residue-and-quotient (RQ) code, to embed into motion estimation (ME) for video coding testing applications. An error in processing elements (PEs), i.e. key components of a ME, can be detected and recovered effectively by using the EDDR design. The proposed EDDR design for ME testing can detect errors and recover data with an acceptable area overhead and timing penalty. The functional verification and synthesis can be done by Xilinx ISE. That is when compare to the existing design the implemented design area and timing will be reduced.
Index Terms—Area overhead, data recovery, error detection, reliability, residue-and-quotient (RQ) code, Xilinx ISE
The synthesis of digital circuits is a basic skill in all the bachelors degrees in the field of ICT,
such as Computer Science, Telecommunications Engineering or Electrical Engineering. In this presentation, the authors (David Bañeres, Robert Clarisó, Josep Jorba, Montse Serra) propose an online platform where the students can design and verify
their circuits with individual and automatic feedback.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2021/08/high-fidelity-conversion-of-floating-point-networks-for-low-precision-inference-using-distillation-with-limited-data-a-presentation-from-imagination-technologies/
James Imber, Senior Research Engineer at Imagination Technologies, presents the “High-fidelity Conversion of Floating-point Networks for Low-precision Inference using Distillation with Limited Data” tutorial at the May 2021 Embedded Vision Summit.
When converting floating-point networks to low-precision equivalents for high-performance inference, the primary objective is to maximally compress the network whilst maintaining fidelity to the original, floating-point network. This is made particularly challenging when only a reduced or unlabelled dataset is available. Data may be limited for reasons of a commercial or legal nature: for example, companies may be unwilling to share valuable data and labels that represent a substantial investment of resources; or the collector of the original dataset may not be permitted to share it for data privacy reasons.
Imber presents a method based on distillation that allows high-fidelity, low-precision networks to be produced for a wide range of different network types, using the original trained network in place of a labeled dataset. The proposed approach is directly applicable across multiple domains (e.g. classification, segmentation and style transfer) and can be adapted to numerous network compression techniques.
The boom of artificial intelligence brought to the market a set of impressive solutions both on hardware and software sides. On the other hand, massive implementation of AI in various areas brings about problems, and security is one of the greatest concerns. The speaker will present results of hands-on vulnerability research of different components of AI infrastructure, including NVIDIA DGX GPU servers, ML frameworks, such as PyTorch, Keras, and TensorFlow, data processing pipelines and specific applications, including medical imaging and face recognition–powered CCTV. Updated Internet Census toolkit based on the Grinder framework will be introduced.
Accord.Net: Looking for a Bug that Could Help Machines Conquer HumankindPVS-Studio
Articles discussing the results of analysis of open-source projects are a good thing as they benefit everyone: some, including project authors themselves, can find out what bugs lurk in a project; others discover for themselves the static analysis technology and start using it to improve their code's quality. For us, it is a wonderful means to promote PVS-Studio analyzer, as well as to put it through some additional testing. This time I have analyzed Accord.Net framework and found lots of interesting issues in its code.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
Testing, Learning and Professionalism — 20171214David Rodenas
Two hours talk about testing, its history, its meaning and propose, a small guide of good practices, and what it is supposed to be a good professional and what is expected from us the professionals.
implementation of area efficient high speed eddr architectureKumar Goud
Abstract-This project presents an EDDR design, based on the residue-and-quotient (RQ) code, to embed into motion estimation (ME) for video coding testing applications. An error in processing elements (PEs), i.e. key components of a ME, can be detected and recovered effectively by using the EDDR design. The proposed EDDR design for ME testing can detect errors and recover data with an acceptable area overhead and timing penalty. The functional verification and synthesis can be done by Xilinx ISE. That is when compare to the existing design the implemented design area and timing will be reduced.
Index Terms—Area overhead, data recovery, error detection, reliability, residue-and-quotient (RQ) code, Xilinx ISE
The synthesis of digital circuits is a basic skill in all the bachelors degrees in the field of ICT,
such as Computer Science, Telecommunications Engineering or Electrical Engineering. In this presentation, the authors (David Bañeres, Robert Clarisó, Josep Jorba, Montse Serra) propose an online platform where the students can design and verify
their circuits with individual and automatic feedback.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2021/08/high-fidelity-conversion-of-floating-point-networks-for-low-precision-inference-using-distillation-with-limited-data-a-presentation-from-imagination-technologies/
James Imber, Senior Research Engineer at Imagination Technologies, presents the “High-fidelity Conversion of Floating-point Networks for Low-precision Inference using Distillation with Limited Data” tutorial at the May 2021 Embedded Vision Summit.
When converting floating-point networks to low-precision equivalents for high-performance inference, the primary objective is to maximally compress the network whilst maintaining fidelity to the original, floating-point network. This is made particularly challenging when only a reduced or unlabelled dataset is available. Data may be limited for reasons of a commercial or legal nature: for example, companies may be unwilling to share valuable data and labels that represent a substantial investment of resources; or the collector of the original dataset may not be permitted to share it for data privacy reasons.
Imber presents a method based on distillation that allows high-fidelity, low-precision networks to be produced for a wide range of different network types, using the original trained network in place of a labeled dataset. The proposed approach is directly applicable across multiple domains (e.g. classification, segmentation and style transfer) and can be adapted to numerous network compression techniques.
The boom of artificial intelligence brought to the market a set of impressive solutions both on hardware and software sides. On the other hand, massive implementation of AI in various areas brings about problems, and security is one of the greatest concerns. The speaker will present results of hands-on vulnerability research of different components of AI infrastructure, including NVIDIA DGX GPU servers, ML frameworks, such as PyTorch, Keras, and TensorFlow, data processing pipelines and specific applications, including medical imaging and face recognition–powered CCTV. Updated Internet Census toolkit based on the Grinder framework will be introduced.
Accord.Net: Looking for a Bug that Could Help Machines Conquer HumankindPVS-Studio
Articles discussing the results of analysis of open-source projects are a good thing as they benefit everyone: some, including project authors themselves, can find out what bugs lurk in a project; others discover for themselves the static analysis technology and start using it to improve their code's quality. For us, it is a wonderful means to promote PVS-Studio analyzer, as well as to put it through some additional testing. This time I have analyzed Accord.Net framework and found lots of interesting issues in its code.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
3. 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
24. BINARY
Gottfried Leibniz
24Image src: Christoph Bernhard Francke - Herzog Anton Ulrich-Museum, online, https://commons.wikimedia.org/w/index.php?curid=53159699
44. Integer
There are various languages where int32* is represented in one of its forms
44
*under Int32 means 32-bit signed integer.
TYPES
45. 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
66. 66
EVEN MORE FUN WITH JS
alert(0.1 + 0.2 == 0.3); false
alert(0.1.toFixed(20)); 0.10000000000000000555
alert(9999999999999999); 10000000000000000
67. BUT WHY SO MUCH WEIRD STUFF?
67Image src: https://giphy.com/
68. IEE - Institute of Electrical and Electronics Engineers
William Kahan
68Image src: George M. Bergman - http://owpdb.mfo.de/detail?photo_id=13645
IEE754
80. NOT A SINGLE LINE
OF CODE IN THE WORLD DOES
80Image src: https://giphy.com/
81. 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
Дефолтний слайд, можна не читати – в 2х словах тут написано, що якби ви раптом вирішили робити якісь посилання на цю доповідь чи слайди – ви це робите на власний страх і ризик. Ні компанія CoreValue ні CursorEducation, навіть автор не беруть на себе жодної відповідальності стосовно істини в останній інстанції. Грубо кажучи – довіряй, але провіряй.
Хто знає хто це? Таке собі питання, адже тут і так це написано) Ніколас Франкель - якщо ви щось шукали відносно Java || Spring на StackOwerflof то скоріш за все отримували відповідь оцього чувака. Ну і загалом в нього багато крутих доповідей - рекомендую
Так от. Не так давно (+- на початку листопада 2017) він у своєму блозі виклав СВІЙ підхід до написання кінотів і публічних виступів, і оскільки ця презентація якраз в той самий час і писалась я не міг на це не звернути увагу
Одним з пунктів - не використовувати гіфки взагалі або обмежити їх тривалість/кількість. І тут я такий …
Хммм ? Як то без гіфок? В гіфок і мемів багато спільного з програмуванням, хто б міг подумати)
Тому ми спробуємо спростувати це! Меми і гіфки кращий друг презентації =)
Це був короткий ліричний відступ, тепер повернімось до презентації.
Великий Думач (Big Though) - суперкомпютер
Питання життя, всесвіту і взагалі
Відповідь 42. А яке ж питання
Компютер може обрахувати і зробити практично що завгодно. В усіх сферах життя людини. І робить він це всього-лиш маніпулюючи ЧИСЛАМИ!
Тому давай поговоримо про числа більш докладніше…
Давним-давно наші з вами предки жили високо на деревах і мали руки і пальці як основне знаряддя добування їжі. Як не дивно – в нашій історії все починається з пальців.Та потім клімат різко змінився і людині довелось злізти з дерева і взяти в руку палицю щоб полювати на мамонта. Розвиток і еволюція робили знаряддя праці і спосіб добування їжі дедалі складнішим, а людське суспільство все більшим і більшим – з сімей воно переросло в общини, з общин в племена, з племен в народи.
І на певному етапі розвитку людини в нас виникла гостра необхідність все впорядкувати і …
Порахувати. Так з'являються лічба і писемність – 2 ключових винаходи які зробили нас нами.
Одними з перших кому пальців стало замало були древні єгиптяни. Їх система була доволі проста, проте ефективна як на той час.
Ключем тогочасного прогресу була торгівля - переважно морем - і лідерами регіону того часу були фінікійці (жили на території сучасного Лівану).Вони і привезли єгипетську систему грекам, а ті її модифікували і допрацювали – вони присвоїли цифри відповідно до літер у їх абетці
Римлянам ж здалось що грецька система занадто складна і недостатньо гнучка, тому вони вирішили придумати свою яка б відповідала вимогам тодішніх математиків і науковців
Приблизно в той самий час на територіях сьогоднішнього Китаю відбувалось дещо зовсім відмінне. Тодішні китайці придумали систему знаків які при різній компоновці між собою складались у інше число
Проте усім цим системам бракувало гнучкості і абстрактності (навряд чи хтось в той час насправді оперував таким поняттям=))) і крім всього іншого там не було дечого надзвичайно важливого... Чого?
0 звісно
В той час сталось переломне для всього людства відкриття на території сучасної Індії. Тогочасні математики прийшли до поняття відсутності чогось як дуже важливого у математиці і науці загалом. Крім того вони змогли перейти від адитивної системи до позиційної
в залежності від позицій чисел утворювалось нове число, і чим більше було позиційних чисел тим більшим число було. Фактично ми можемо розкласти будь-яке число в лінійний ряд і перемножити його на 10 в степені його позиції щоб знати його порядковість.
Основа числення: 1) двійкова (про неї згодом)
2) десяткова (використовується повсюдно, порахували пальці на руках)
3) була основа в 20 (інки порахували пальці не тільки на руках, а й на ногах)
4) основа в 12 (приклади)
5) основа в 60
Дещо цікаве про те як в кола з'явились 360 градусів. Придумали це в древній Месопотамії. Вавилоняни були вкрай вправними астрономами і у своїх спостереженнях вони з'ясували що в коло ідеально можна вписати пентагон
який ідеально ділиться на 6 рівносторонніх трикутників де довжина сторони це радіус, а оскільки за базу числення у них було 60 то і кут кожного такого трикутника був 60.нескладні калькуляції: 6 х 60 = 360.
Математика розвивалась і в один момент ми прийшли до ідеї двійкової системи (а конкретно до неї за допомогою праць Томаса Буля прийшов Готтфрід Лейбніц, ось власне він на картинці і є)
І от комусь в голову прийшла геніальна ідея - стан транзистора вкл/викл передавати через 1 і 0 відповідно. І так числа плавно зайшли в еру компютерних технологій як цілком природнє і невід'ємне від індустрії.
Множина цілих чисел нескінченна, але ми завжди можемо підібрати таке число біт, щоб представити будь-яке ціле число, що виникає при вирішенні конкретної задачі.
Давайте спробуємо в простий спосіб трансформувати число 21 у бінарне його представлення. Для цього застосуємо трансформацію Горнера
У далекі часи, для IT-індустрії це 70-ті роки минулого століття, вчені-математики (так раніше називалися програмісти) билися як Дон-Кіхоти в нерівному бою з комп'ютерами, які тоді були розміром з маленькі вітряки. Завдання ставилися серйозні: пошук ворожих підводних човнів в океані по знімках з орбіти, розрахунок балістики ракет дальньої дії, і інше. Для їх вирішення комп'ютер повинен оперувати дійсними числами, яких, як відомо, континуум, тоді як пам'ять кінцева. Тому доводиться відображати цей континуум на закінчувану кількість нулів і одиниць. У пошуках компромісу між швидкістю, розміром і точністю уявлення вчені запропонували числа з плаваючою комою.
Множина дійсних чисел не тільки нескінченна, але ще і безперервна, тому, скільки б ми не взяли біт, ми неминуче зіткнемося з числами, які не мають точного представлення. Числа з плаваючою точкою - один з можливих способів представлення дійсних чисел, який є компромісом між точністю і діапазоном прийнятих значень.
Число з плаваючою точкою складається з набору окремих розрядів, умовно розділених на знак, експоненту (порядок) і мантису. Порядок і мантиса - цілі числа, які разом зі знаком дають представленя числа з плаваючою комою в наступному вигляді:
Мантиса
Поки все здається просто і чудово, але потім з'являються вони …
Проблеми! Виявляється зааплаїти математику і числа для комп'ютера не така вже і тривіальна задача…
Не те щоб основна проблема математики, але наявність у 2017 двох варіантів запису нецілих чисел викликає подив (ну принаймні в мене). Думаю рано чи пізно дана проблема буде вирішена в користь нижнього варіанту – адже ним користується ваш компютер.
У зв'язку з тим що нуль він таке особливе число – ми отримуємо от таку з точки математики єресь (ну принаймні в с-подібних мовах), позитивний і негативний 0, все через складність запису нецілих чисел у двійковому представлені.
Строга типізація звичайно виграла у нетипізованих мов, але тим не менше типи не завжди корисні, от як тут. Метод “індексОф” не може повернути нічого іншого крім інта, і навіть коли шуканого елемента немає він не повертає null (хоча вочевидь міг), нам повертається -1. Дуже транспарантно.
Ну і вишенькою на торті
Хтось може висловити припущення – як так?
Неправильний з точки зору математики звісно
Хтось чув історію про Аріан-5?
Аріан 5 (фр. Ariane 5) — одноразова європейська ракета-носій сімейства Аріан, призначена для виведення корисного навантаження на низьку опорну орбіту (LEO) або геоперехідну орбіту (ГПО). Проект підтримується Європейським космічним агентством (ЄКА), основний підрядник — European Astrium Space Transportation (EADS). Ракета просувається на ринку компанією Аріанеспас. Запуски відбуваються з космодрому Куру у Французькій Гвіані. РН Аріан 5 є основною ракетою-носієм ЄКА і була такою принаймні до 2015.
Перший випробувальний політ РН відбувся 4 червня 1996 року і був невдалим. РН був підірваний на 34 секунді польоту через несправність в куруючому програмному забезпеченні.
Конвертація даних з 64-х розрядного числа з плаваючою комою у 16-ти розрядне призвела до зависання комп'ютера. Процедура на мові Ада, яка оброблювала цю виключну ситуацію, була вилучена з міркувань збереження продуктивності системи.
Дана комп'ютерна помилка вважається найдорожчою у історії ІТ індустрії…
Вона коштувала близько 500 мільйонів доларів США.
Всі пишуть баги =)
Іншою великою проблемою застосування математики і чисел в комп'ютерах, є проблема ділення на 0.
Жоден математик в здоровому глузді на нуль ділити не стане – бо так неможна ж. Але для машини така операції абсолютно нормальна і може трапитись легко.То що робити в таких випадках?
Як бачите – одностайного підходу до вирішення цієї проблеми в мовах програмування немає і досі
Давайте трошки порозважаємось з віртуальною машиною Джави (все таки джава для мене мейн технологія., то я розважатись на ній)
Чого стільки конфузів і невідповідності і що з тим робити? Давайте трохи відмотаємось назад, у 60-ті
У 60-е і 70-ті роки не було єдиного стандарту представлення чисел з плаваючою комою, способів округлення, арифметичних операцій. В результаті програми були вкрай не портабельні. Але ще більшою проблемою було те, що у різних комп'ютерів були свої «дивацтва» і їх потрібно було знати і враховувати в програмі. Наприклад, різниця двох не рівних чисел повертала нуль. В результаті вираз «X = Y» і «X-Y = 0» вступали в протиріччя. Умільці обходили цю проблему дуже хитрими трюками, наприклад, робили присвоювання «X = (X-X) + X» перед операціями множення і ділення, щоб уникнути проблем.
Ініціатива створити єдиний стандарт для представлення чисел з плаваючою точкою підозріло співпала зі спробами в 1976 році компанією Intel розробити «кращу» арифметику для нових співпроцесорів до 8086 і i432. За розробку взялися вчені - кити в цій області, проф. Джон Палмер і Вільям Кехен. Останній у своєму інтерв'ю висловив думку, що серйозність, з якою Intel розробляла свою арифметику, змусила інші компанії об'єднатися і почати процес стандартизації.
Всі були налаштовані серйозно, адже дуже вигідно просунути свою архітектуру і зробити її стандартної. Свої пропозиції представили компанії 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.
І із всіх цих людей реальною відмазка тільки в останніх трьох.
Apple довелось замінити реальний рандом на ПСЕВДОрандом!