SlideShare a Scribd company logo
1 of 49
Problems


                     Tao He
           elfinhe@gmail.com

                  @SELAB, SYSU
                      2010,May

                  About 90 minutes




                               1/20
Themes
   Hackerdom
   Programming Languages




                            2/49
Fascinating Problems

                  “The   world is full of fascinating
                     problems waiting to be solved.”
                                                    Eric Raymond, How to become a hacker




Eric Raymond. How To Become A Hacker. http://catb.org/~esr/faqs/hacker-howto.html
Eric Raymond. The Cathedral and the Bazaar. http://catb.org/esr/writings/homesteading/
                                                                                         3/49
Hacker
   Not Cracker, But Creator
   Eager to Communicate




                               4/49
FLOSS community
                        Not only Free Source
                        But an Efficiency Way
                         to Communicate, Study and Work
                        Tashi
                             “Talk is cheap. Show me the code.” Linus




FLOSS: Free-Libre and Open Source Software
                                                                         5/49
IF NOT OPEN?
                    Information Inequality
                    Esoterica
                          Design Patterns
                    No Feedback




Herbert Schiller. Information Inequality: The Deepening Social Crisis in America, Routledge 1995, ISBN 0415907659
                                                                                                       6/49
KISS: Keep It Simple and Stupid
   “Perfection (in design) is achieved not when
    there is nothing more to add, but rather when
    there is nothing more to take away.”
   Linux
       Fid
       Process
       Memory
   Design Patterns

                                                7/49
Tools
   Everything




                 8/49
Tools
   Lingoes




              9/49
Tools
   Wakoopa




              10/49
Tools
   SuperMemo




                11/49
Thank you!



             12/49
Themes
   Hackerdom
   Programming Languages




                            13/49
Why we use Programming
Languages?
   For customers
       To meet their requirements. ( For example , OA
        systems)
   For machine ( Von Neumann Architecture )
       Instruction flow
       Data
   Strange, isn’t it ?



                                                     14/49
Other Problems
   Common Elements in High-Level
    Languages?
   Dynamic ?
   Syntax, Semantics and Pragmatics ?
   Semantics and Logic?




                                         15/49
Assembler Language




                     16/49
Assembler Language
   Macro of Machine Code
   While Programming
       Registers
       Data Seg
       Code Seg
       Stack Seg
   Von Neumann Architecture
       Instruction fetch
       Instruction execute

                               17/49
We have Data Seg already.
Why we need Stack Seg ?

   Modules
   But Stack is manual




                            18/49
Why we need Modules ?
   Recursion
   Reusability
   Scope Encapsulation




                          19/49
Stacks and Modules’ Disadvantages
   Time
   Space: Stack Overflow




                                    20/49
The C Programming Language




                             21/49
What’s NEW in C
   Expressions (Formal Languages,
    Automaton )
       For Instruction
          Arithmetic Expressions ( 3+2-5*3 )

          Control Flow Expressions ( for, if…else…, )

          Function Expressions

       For Data
          Type System
               Atom
               Structure
   We have a Compiler now
                                                         22/49
Advantages from Expressions
   Human
       For Instruction
          Arithmetic Expressions ( 3+2-5*3 )
          Control Flow Expressions ( for, if…else…, )

          Function Expressions

       For Data
            Type System
                 Atom
                 Structure



                                                         23/49
Advantages from Compiler
   Expressions
   Modules : Stack is Automatic
   Code Optimization ( Inline, Tail Recursion )




                                               24/49
Compile-time vs. Run-time in C
   Compile-time
       Type Information
       Function Information
   Run-time
       null




                                 25/49
The C++ Programming Language




                               26/49
What’s NEW in C++?
   Paradigms
   Class Member Functions
   Inheritance Hierarchies
   Virtual Function & Virtual Inherit
   Template




                                         27/49
Paradigms in C++
   Procedural
   ADT
   OO




                   28/49
Class Member Functions
   Special Code
       ___ClsA_Func2(..., ClsA *this)




                                         29/49
Inheritance Hierarchies
   Almost Compile-time
   Virtual: Run-time




                          30/49
C++ want to be as Efficiency as C
   It’s all right for Procedural and ADT
   But not for OO with Virtual
   No Run-time Hierarchies Meta-data for
    Polymorphism




                                            31/49
Virtual Function:
Virtual Function Table




                         32/49
Inheritance
   Single Inheritance
   Multiple Inheritance
   Single Virtual Inheritance
   Multiple Virtual Inheritance




                                   33/49
Virtual Inheritance: Virtual Base Table




                                          34/49
Compile-time vs. Run-time in C++
   Compile-time
       Inheritance Hierarchies Information
       Function Information
   Run-time ( Dynamic )
       Virtual Function Table
       Virtual Base Table




                                              35/49
Cross-Platform in C++?
   Source-Level: Yes
       Cross-Platform is Manual for different OS API
   Execution-Level : No




                                                        36/49
What is not Efficiency C++?
   Run-time
       Virtual Function
       Virtual Inheritance
            Virtual Base Class without Virtual Function and
             Data will be optimized.
                 Java can Multiple Implement Interfaces.
   Compile-time
       Inheritance Hierarchies



                                                               37/49
The Java Programming Language




Mark Stoodley. Issues in static and dynamic native Java code compilation.
http://www.ibm.com/developerworks/java/library/j-rtj2/index.html
                                                                            38/49
What’s NEW in Java?
   JVM
   Dynamic Compilation




                          39/49
虚拟机的好处有什么?

   跨平台:在 OS 与字节码间隔了一层。实
    现了程序员无负担的跨平台。
   动态编译:许多信息不必在编译后确定,
    为动态特性提供可能,稍后详细说。
   运行时维护着类型信息,甚至可以加载新
    的类型。( CORBRA 依赖这个实现。)




                        40/49
Java 编译执行的过程是怎样的?
 
   编译后产生一个基于堆栈的字节码
   JRE 在不同的 OS 上提供支持
   起初的 JRE 是解释执行的,效率低下。
       获取待执行的下一个字节码。
       解码。
       从操作数堆栈获取所需的操作数。
       按照  JVM 规范执行操作。
       将结果写回堆栈。


                           41/49
Java 如何解决执行效率低下问题
?




                42/49
JIT 是怎样运行的呢?
   每次按照一个 function 来编译
   转成中间表示,并优化,转成可执行码
   编译线程和执行线程
   分析框架 Profiler 观察程序行为
       例如热点 function 内部对象维持一个池。




                                   43/49
动态编译的优点有什么?
   学习程序的行为并优化
       频繁执行的 function—— 热方法
       arrayCopy 方法,拷贝大段内存,特殊指令
       例如类层次结构,多态的优化。
           (大多数虚调用都有其固定的一个目标, JIT 因
            此生成的代码比虚表调用代码的效率会更高。)




                                   44/49
动态编译的缺点有什么?
   初始编译会影响启动时间。
   运行时编译,行为分析需要花费时间。
   运行效率达到稳定需要时间。
   GUI 不能忍受动态编译和 GC 带来的延迟
    。




                         45/49
Java 如何解决实时的需求?
   AOT ( Ahead-of-time )编译器
       预先编译成为可执行码




                               46/49
47/49
Java 适合怎样的应用呢?
   Java 比较时候需要长期运行的应用,
       Web 服务器
       Daemon 服务




                          48/49
Thank you!



             49/49

More Related Content

What's hot

Chapter 5-programming
Chapter 5-programmingChapter 5-programming
Chapter 5-programmingAten Kecik
 
Introduction to llvm
Introduction to llvmIntroduction to llvm
Introduction to llvmTao He
 
Introduction to programming with c,
Introduction to programming with c,Introduction to programming with c,
Introduction to programming with c,Hossain Md Shakhawat
 
Programming Fundamentals and basic knowledge
Programming Fundamentals and basic knowledge Programming Fundamentals and basic knowledge
Programming Fundamentals and basic knowledge imtiazalijoono
 
Why C is Called Structured Programming Language
Why C is Called Structured Programming LanguageWhy C is Called Structured Programming Language
Why C is Called Structured Programming LanguageSinbad Konick
 

What's hot (6)

Chapter 5-programming
Chapter 5-programmingChapter 5-programming
Chapter 5-programming
 
Introduction to llvm
Introduction to llvmIntroduction to llvm
Introduction to llvm
 
Introduction to programming with c,
Introduction to programming with c,Introduction to programming with c,
Introduction to programming with c,
 
Programming Fundamentals and basic knowledge
Programming Fundamentals and basic knowledge Programming Fundamentals and basic knowledge
Programming Fundamentals and basic knowledge
 
Why C is Called Structured Programming Language
Why C is Called Structured Programming LanguageWhy C is Called Structured Programming Language
Why C is Called Structured Programming Language
 
C programming first_session
C programming first_sessionC programming first_session
C programming first_session
 

Viewers also liked

Viewers also liked (7)

Golf Poster Large
Golf Poster LargeGolf Poster Large
Golf Poster Large
 
2012 Golf Poster 1
2012 Golf Poster 12012 Golf Poster 1
2012 Golf Poster 1
 
Charity golf poster (low res)
Charity golf poster (low res)Charity golf poster (low res)
Charity golf poster (low res)
 
Golf expo powerpoint
Golf expo powerpointGolf expo powerpoint
Golf expo powerpoint
 
2015 COBAA Golf Tournament Poster
2015 COBAA Golf Tournament Poster2015 COBAA Golf Tournament Poster
2015 COBAA Golf Tournament Poster
 
El golf
El golfEl golf
El golf
 
March 2013 announcements
March 2013 announcementsMarch 2013 announcements
March 2013 announcements
 

Similar to Problems

Unmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/InvokeUnmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/InvokeDmitri Nesteruk
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSkills Matter
 
Peyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_futurePeyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_futureTakayuki Muranushi
 
Preparing to program Aurora at Exascale - Early experiences and future direct...
Preparing to program Aurora at Exascale - Early experiences and future direct...Preparing to program Aurora at Exascale - Early experiences and future direct...
Preparing to program Aurora at Exascale - Early experiences and future direct...inside-BigData.com
 
PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD
PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSDPmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD
PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSDjkoshy
 
End-to-End Deep Learning Deployment with ONNX
End-to-End Deep Learning Deployment with ONNXEnd-to-End Deep Learning Deployment with ONNX
End-to-End Deep Learning Deployment with ONNXNick Pentreath
 
Overview of FreeBSD PMC Tools
Overview of FreeBSD PMC ToolsOverview of FreeBSD PMC Tools
Overview of FreeBSD PMC ToolsACMBangalore
 
First compailer written
First compailer writtenFirst compailer written
First compailer writtenmicrowoorkers
 
Docker's Jérôme Petazzoni: Best Practices in Dev to Production Parity for Con...
Docker's Jérôme Petazzoni: Best Practices in Dev to Production Parity for Con...Docker's Jérôme Petazzoni: Best Practices in Dev to Production Parity for Con...
Docker's Jérôme Petazzoni: Best Practices in Dev to Production Parity for Con...Heavybit
 
Fabric for Deep Learning
Fabric for Deep LearningFabric for Deep Learning
Fabric for Deep LearningAnimesh Singh
 
Socket Programming In Python
Socket Programming In PythonSocket Programming In Python
Socket Programming In Pythondidip
 
Synapse india fundamentals of dotnet development
Synapse india fundamentals of dotnet  developmentSynapse india fundamentals of dotnet  development
Synapse india fundamentals of dotnet developmentSynapseindiappsdevelopment
 
The NRB Group mainframe day 2021 - New Programming Languages on Z - Frank Van...
The NRB Group mainframe day 2021 - New Programming Languages on Z - Frank Van...The NRB Group mainframe day 2021 - New Programming Languages on Z - Frank Van...
The NRB Group mainframe day 2021 - New Programming Languages on Z - Frank Van...NRB
 
Deploying End-to-End Deep Learning Pipelines with ONNX
Deploying End-to-End Deep Learning Pipelines with ONNXDeploying End-to-End Deep Learning Pipelines with ONNX
Deploying End-to-End Deep Learning Pipelines with ONNXDatabricks
 
Is parallel programming hard? And if so, what can you do about it?
Is parallel programming hard? And if so, what can you do about it?Is parallel programming hard? And if so, what can you do about it?
Is parallel programming hard? And if so, what can you do about it?John Lee
 
Directive-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous ComputingDirective-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous ComputingRuymán Reyes
 
Metaprogramming by brandon
Metaprogramming by brandonMetaprogramming by brandon
Metaprogramming by brandonMaslowB
 
XML Amsterdam 2012 Keynote
XML Amsterdam 2012 KeynoteXML Amsterdam 2012 Keynote
XML Amsterdam 2012 Keynotejimfuller2009
 

Similar to Problems (20)

Unmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/InvokeUnmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/Invoke
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelism
 
Peyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_futurePeyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_future
 
Preparing to program Aurora at Exascale - Early experiences and future direct...
Preparing to program Aurora at Exascale - Early experiences and future direct...Preparing to program Aurora at Exascale - Early experiences and future direct...
Preparing to program Aurora at Exascale - Early experiences and future direct...
 
PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD
PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSDPmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD
PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD
 
End-to-End Deep Learning Deployment with ONNX
End-to-End Deep Learning Deployment with ONNXEnd-to-End Deep Learning Deployment with ONNX
End-to-End Deep Learning Deployment with ONNX
 
Overview of FreeBSD PMC Tools
Overview of FreeBSD PMC ToolsOverview of FreeBSD PMC Tools
Overview of FreeBSD PMC Tools
 
First compailer written
First compailer writtenFirst compailer written
First compailer written
 
Docker's Jérôme Petazzoni: Best Practices in Dev to Production Parity for Con...
Docker's Jérôme Petazzoni: Best Practices in Dev to Production Parity for Con...Docker's Jérôme Petazzoni: Best Practices in Dev to Production Parity for Con...
Docker's Jérôme Petazzoni: Best Practices in Dev to Production Parity for Con...
 
Fabric for Deep Learning
Fabric for Deep LearningFabric for Deep Learning
Fabric for Deep Learning
 
Socket Programming In Python
Socket Programming In PythonSocket Programming In Python
Socket Programming In Python
 
Synapse india fundamentals of dotnet development
Synapse india fundamentals of dotnet  developmentSynapse india fundamentals of dotnet  development
Synapse india fundamentals of dotnet development
 
The NRB Group mainframe day 2021 - New Programming Languages on Z - Frank Van...
The NRB Group mainframe day 2021 - New Programming Languages on Z - Frank Van...The NRB Group mainframe day 2021 - New Programming Languages on Z - Frank Van...
The NRB Group mainframe day 2021 - New Programming Languages on Z - Frank Van...
 
Compilers
CompilersCompilers
Compilers
 
Deploying End-to-End Deep Learning Pipelines with ONNX
Deploying End-to-End Deep Learning Pipelines with ONNXDeploying End-to-End Deep Learning Pipelines with ONNX
Deploying End-to-End Deep Learning Pipelines with ONNX
 
Is parallel programming hard? And if so, what can you do about it?
Is parallel programming hard? And if so, what can you do about it?Is parallel programming hard? And if so, what can you do about it?
Is parallel programming hard? And if so, what can you do about it?
 
.NET Online Session
.NET Online Session.NET Online Session
.NET Online Session
 
Directive-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous ComputingDirective-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous Computing
 
Metaprogramming by brandon
Metaprogramming by brandonMetaprogramming by brandon
Metaprogramming by brandon
 
XML Amsterdam 2012 Keynote
XML Amsterdam 2012 KeynoteXML Amsterdam 2012 Keynote
XML Amsterdam 2012 Keynote
 

More from Tao He

Java 并发编程笔记:01. 并行与并发 —— 概念
Java 并发编程笔记:01. 并行与并发 —— 概念Java 并发编程笔记:01. 并行与并发 —— 概念
Java 并发编程笔记:01. 并行与并发 —— 概念Tao He
 
A software fault localization technique based on program mutations
A software fault localization technique based on program mutationsA software fault localization technique based on program mutations
A software fault localization technique based on program mutationsTao He
 
Testing survey
Testing surveyTesting survey
Testing surveyTao He
 
Testing survey by_directions
Testing survey by_directionsTesting survey by_directions
Testing survey by_directionsTao He
 
Smart debugger
Smart debuggerSmart debugger
Smart debuggerTao He
 
Mutation testing
Mutation testingMutation testing
Mutation testingTao He
 
C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4Tao He
 
Django
DjangoDjango
DjangoTao He
 
基于覆盖信息的软件错误定位技术综述
基于覆盖信息的软件错误定位技术综述基于覆盖信息的软件错误定位技术综述
基于覆盖信息的软件错误定位技术综述Tao He
 
Java覆盖信息收集工具比较
Java覆盖信息收集工具比较Java覆盖信息收集工具比较
Java覆盖信息收集工具比较Tao He
 
Testing group’s work on fault localization
Testing group’s work on fault localizationTesting group’s work on fault localization
Testing group’s work on fault localizationTao He
 
Muffler a tool using mutation to facilitate fault localization 2.0
Muffler a tool using mutation to facilitate fault localization 2.0Muffler a tool using mutation to facilitate fault localization 2.0
Muffler a tool using mutation to facilitate fault localization 2.0Tao He
 
Muffler a tool using mutation to facilitate fault localization 2.3
Muffler a tool using mutation to facilitate fault localization 2.3Muffler a tool using mutation to facilitate fault localization 2.3
Muffler a tool using mutation to facilitate fault localization 2.3Tao He
 
Semantic Parsing in Bayesian Anti Spam
Semantic Parsing in Bayesian Anti SpamSemantic Parsing in Bayesian Anti Spam
Semantic Parsing in Bayesian Anti SpamTao He
 
A survey of software testing
A survey of software testingA survey of software testing
A survey of software testingTao He
 
Cleansing test suites from coincidental correctness to enhance falut localiza...
Cleansing test suites from coincidental correctness to enhance falut localiza...Cleansing test suites from coincidental correctness to enhance falut localiza...
Cleansing test suites from coincidental correctness to enhance falut localiza...Tao He
 
Concrete meta research - how to collect, manage, and read papers?
Concrete meta research - how to collect, manage, and read papers?Concrete meta research - how to collect, manage, and read papers?
Concrete meta research - how to collect, manage, and read papers?Tao He
 

More from Tao He (17)

Java 并发编程笔记:01. 并行与并发 —— 概念
Java 并发编程笔记:01. 并行与并发 —— 概念Java 并发编程笔记:01. 并行与并发 —— 概念
Java 并发编程笔记:01. 并行与并发 —— 概念
 
A software fault localization technique based on program mutations
A software fault localization technique based on program mutationsA software fault localization technique based on program mutations
A software fault localization technique based on program mutations
 
Testing survey
Testing surveyTesting survey
Testing survey
 
Testing survey by_directions
Testing survey by_directionsTesting survey by_directions
Testing survey by_directions
 
Smart debugger
Smart debuggerSmart debugger
Smart debugger
 
Mutation testing
Mutation testingMutation testing
Mutation testing
 
C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4
 
Django
DjangoDjango
Django
 
基于覆盖信息的软件错误定位技术综述
基于覆盖信息的软件错误定位技术综述基于覆盖信息的软件错误定位技术综述
基于覆盖信息的软件错误定位技术综述
 
Java覆盖信息收集工具比较
Java覆盖信息收集工具比较Java覆盖信息收集工具比较
Java覆盖信息收集工具比较
 
Testing group’s work on fault localization
Testing group’s work on fault localizationTesting group’s work on fault localization
Testing group’s work on fault localization
 
Muffler a tool using mutation to facilitate fault localization 2.0
Muffler a tool using mutation to facilitate fault localization 2.0Muffler a tool using mutation to facilitate fault localization 2.0
Muffler a tool using mutation to facilitate fault localization 2.0
 
Muffler a tool using mutation to facilitate fault localization 2.3
Muffler a tool using mutation to facilitate fault localization 2.3Muffler a tool using mutation to facilitate fault localization 2.3
Muffler a tool using mutation to facilitate fault localization 2.3
 
Semantic Parsing in Bayesian Anti Spam
Semantic Parsing in Bayesian Anti SpamSemantic Parsing in Bayesian Anti Spam
Semantic Parsing in Bayesian Anti Spam
 
A survey of software testing
A survey of software testingA survey of software testing
A survey of software testing
 
Cleansing test suites from coincidental correctness to enhance falut localiza...
Cleansing test suites from coincidental correctness to enhance falut localiza...Cleansing test suites from coincidental correctness to enhance falut localiza...
Cleansing test suites from coincidental correctness to enhance falut localiza...
 
Concrete meta research - how to collect, manage, and read papers?
Concrete meta research - how to collect, manage, and read papers?Concrete meta research - how to collect, manage, and read papers?
Concrete meta research - how to collect, manage, and read papers?
 

Recently uploaded

The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
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
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
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
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
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
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
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
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
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
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
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
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
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
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 

Problems

  • 1. Problems Tao He elfinhe@gmail.com @SELAB, SYSU 2010,May About 90 minutes 1/20
  • 2. Themes  Hackerdom  Programming Languages 2/49
  • 3. Fascinating Problems  “The world is full of fascinating problems waiting to be solved.” Eric Raymond, How to become a hacker Eric Raymond. How To Become A Hacker. http://catb.org/~esr/faqs/hacker-howto.html Eric Raymond. The Cathedral and the Bazaar. http://catb.org/esr/writings/homesteading/ 3/49
  • 4. Hacker  Not Cracker, But Creator  Eager to Communicate 4/49
  • 5. FLOSS community  Not only Free Source  But an Efficiency Way to Communicate, Study and Work  Tashi  “Talk is cheap. Show me the code.” Linus FLOSS: Free-Libre and Open Source Software 5/49
  • 6. IF NOT OPEN?  Information Inequality  Esoterica  Design Patterns  No Feedback Herbert Schiller. Information Inequality: The Deepening Social Crisis in America, Routledge 1995, ISBN 0415907659 6/49
  • 7. KISS: Keep It Simple and Stupid  “Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.”  Linux  Fid  Process  Memory  Design Patterns 7/49
  • 8. Tools  Everything 8/49
  • 9. Tools  Lingoes 9/49
  • 10. Tools  Wakoopa 10/49
  • 11. Tools  SuperMemo 11/49
  • 12. Thank you! 12/49
  • 13. Themes  Hackerdom  Programming Languages 13/49
  • 14. Why we use Programming Languages?  For customers  To meet their requirements. ( For example , OA systems)  For machine ( Von Neumann Architecture )  Instruction flow  Data  Strange, isn’t it ? 14/49
  • 15. Other Problems  Common Elements in High-Level Languages?  Dynamic ?  Syntax, Semantics and Pragmatics ?  Semantics and Logic? 15/49
  • 17. Assembler Language  Macro of Machine Code  While Programming  Registers  Data Seg  Code Seg  Stack Seg  Von Neumann Architecture  Instruction fetch  Instruction execute 17/49
  • 18. We have Data Seg already. Why we need Stack Seg ?  Modules  But Stack is manual 18/49
  • 19. Why we need Modules ?  Recursion  Reusability  Scope Encapsulation 19/49
  • 20. Stacks and Modules’ Disadvantages  Time  Space: Stack Overflow 20/49
  • 21. The C Programming Language 21/49
  • 22. What’s NEW in C  Expressions (Formal Languages, Automaton )  For Instruction  Arithmetic Expressions ( 3+2-5*3 )  Control Flow Expressions ( for, if…else…, )  Function Expressions  For Data  Type System  Atom  Structure  We have a Compiler now 22/49
  • 23. Advantages from Expressions  Human  For Instruction  Arithmetic Expressions ( 3+2-5*3 )  Control Flow Expressions ( for, if…else…, )  Function Expressions  For Data  Type System  Atom  Structure 23/49
  • 24. Advantages from Compiler  Expressions  Modules : Stack is Automatic  Code Optimization ( Inline, Tail Recursion ) 24/49
  • 25. Compile-time vs. Run-time in C  Compile-time  Type Information  Function Information  Run-time  null 25/49
  • 26. The C++ Programming Language 26/49
  • 27. What’s NEW in C++?  Paradigms  Class Member Functions  Inheritance Hierarchies  Virtual Function & Virtual Inherit  Template 27/49
  • 28. Paradigms in C++  Procedural  ADT  OO 28/49
  • 29. Class Member Functions  Special Code  ___ClsA_Func2(..., ClsA *this) 29/49
  • 30. Inheritance Hierarchies  Almost Compile-time  Virtual: Run-time 30/49
  • 31. C++ want to be as Efficiency as C  It’s all right for Procedural and ADT  But not for OO with Virtual  No Run-time Hierarchies Meta-data for Polymorphism 31/49
  • 33. Inheritance  Single Inheritance  Multiple Inheritance  Single Virtual Inheritance  Multiple Virtual Inheritance 33/49
  • 34. Virtual Inheritance: Virtual Base Table 34/49
  • 35. Compile-time vs. Run-time in C++  Compile-time  Inheritance Hierarchies Information  Function Information  Run-time ( Dynamic )  Virtual Function Table  Virtual Base Table 35/49
  • 36. Cross-Platform in C++?  Source-Level: Yes  Cross-Platform is Manual for different OS API  Execution-Level : No 36/49
  • 37. What is not Efficiency C++?  Run-time  Virtual Function  Virtual Inheritance  Virtual Base Class without Virtual Function and Data will be optimized.  Java can Multiple Implement Interfaces.  Compile-time  Inheritance Hierarchies 37/49
  • 38. The Java Programming Language Mark Stoodley. Issues in static and dynamic native Java code compilation. http://www.ibm.com/developerworks/java/library/j-rtj2/index.html 38/49
  • 39. What’s NEW in Java?  JVM  Dynamic Compilation 39/49
  • 40. 虚拟机的好处有什么?  跨平台:在 OS 与字节码间隔了一层。实 现了程序员无负担的跨平台。  动态编译:许多信息不必在编译后确定, 为动态特性提供可能,稍后详细说。  运行时维护着类型信息,甚至可以加载新 的类型。( CORBRA 依赖这个实现。) 40/49
  • 41. Java 编译执行的过程是怎样的?    编译后产生一个基于堆栈的字节码  JRE 在不同的 OS 上提供支持  起初的 JRE 是解释执行的,效率低下。  获取待执行的下一个字节码。  解码。  从操作数堆栈获取所需的操作数。  按照  JVM 规范执行操作。  将结果写回堆栈。 41/49
  • 43. JIT 是怎样运行的呢?  每次按照一个 function 来编译  转成中间表示,并优化,转成可执行码  编译线程和执行线程  分析框架 Profiler 观察程序行为  例如热点 function 内部对象维持一个池。 43/49
  • 44. 动态编译的优点有什么?  学习程序的行为并优化  频繁执行的 function—— 热方法  arrayCopy 方法,拷贝大段内存,特殊指令  例如类层次结构,多态的优化。  (大多数虚调用都有其固定的一个目标, JIT 因 此生成的代码比虚表调用代码的效率会更高。) 44/49
  • 45. 动态编译的缺点有什么?  初始编译会影响启动时间。  运行时编译,行为分析需要花费时间。  运行效率达到稳定需要时间。  GUI 不能忍受动态编译和 GC 带来的延迟 。 45/49
  • 46. Java 如何解决实时的需求?  AOT ( Ahead-of-time )编译器  预先编译成为可执行码 46/49
  • 47. 47/49
  • 48. Java 适合怎样的应用呢?  Java 比较时候需要长期运行的应用,  Web 服务器  Daemon 服务 48/49
  • 49. Thank you! 49/49

Editor's Notes

  1.   这样的缺点有两个 1.         虚基类的子类都要背负一个基类指针指向共享部分。如果继承了多个虚基类,还需要多个这样的指针。( Microsoft 的解决方法是增加一个虚基类表,类似于虚函数表。) 2.         虚继承链条的增加,会导致间接访问的层次增加。例如两个菱形继承的串联。