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
 
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
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSkills Matter
 
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
 
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
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelism
 
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

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 

Recently uploaded (20)

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 

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.         虚继承链条的增加,会导致间接访问的层次增加。例如两个菱形继承的串联。