Download presentation
Presentation is loading. Please wait.
Published byCharla Bernice Lynch Modified over 8 years ago
1
#DYNA16 Technical Road Map Update Jay Foad, CTO Morten Kromberg, CXO
2
#DYNA16 1 Trends Microsoft Windows Desktop (“Win32”) is fading New platforms, in particular Linux, are getting more important Parallel processing is becoming important Both Cloud- and GPU-based IoT (Internet of Things): Android & Arm Linux Technical Road Map - Spring 2016
3
#DYNA16 2 Prepare for the Future Support cross-platform Development –Remote IDE for APL on all platforms –Cross-platform UI and integration tools which do not require platform-specific frameworks like Microsoft.Net Add new platforms –Recent: ARM Linux and Apple OSX –To come: Android (perhaps iOS & Windows Mobile) Compilers & Tools for Modern / Parallel Hardware –2 compiler projects, Futures & Isolates –Vector database Technical Road Map - Spring 2016 Microsoft Windows Desktop (“Win32”) is fading New platforms, in particular Linux, are getting more important Parallel processing is becoming important Both Cloud- and GPU-based IoT platforms: Android, ARM Linux
4
#DYNA16 3 Managing Growth The team responsible for Dyalog APL has grown from ~5 people in 2005 to ~20 people in 2015. A new generation of software engineers is ready to lead us into the next three decades of adventure. –Budget calls for hiring one C + one APL developer in 2016. –The original developers, Geoff Streeter and John Scholes, are still on the team. Technology Management was starting to creak at the seams… Technical Road Map - Spring 2016
5
#DYNA16 4 Appearing For the First Time… Jay Foad Chief Technology Officer (CTO) Technical Road Map - Spring 2016 Morten Kromberg Chief eXperience Officer (CXO)
6
#DYNA16 5 CXO vs CTO (with thanks to Wikipedia) A Chief eXperience Officer (CXO) is the officer responsible for the overall user experience (UX) of an organization. The CXO ensures that the organization has good customer service and products that meet current and future requirements, so users are able to have a positive experience. A Chief Technology Officer (CTO) … is focused on scientific and technological issues within an organization. The CTO ensures that the organization is able to effectively make use of relevant technologies to deliver products and services. In a core technology company like Dyalog, there is significant overlap between these roles. The CEO and everyone else will dive in too Technical Road Map - Spring 2016
7
#DYNA16 6 Technical Road Map - Spring 2016 Distribution of Workload CTOSharedCXO Manage Development Team and Production of new Releases Prioritise Requirements Gather and Document Current & Future Requirements Make Technology Choices, e.g. Which Compilers to Use APL Language, System Function, Interface Design With CEO, Plan & Drive new Tutorials & Training Materials Understand how we can harness GPUs and parallel architectures Collaboration Between Development & APL Tools Relations with Other Communities (Functional & Domain Expert) With Chief Architect, manage long- term health of code base “Evangelism” We’re a small technology company, everyone talks to everyone.
8
#DYNA16 7 Introducing Jay Foad BA (First Class) Computer Science Trinity College at Cambridge University Worked on Just-in-Time Compiler Technology for games on mobile devices –Maintaining, developing and porting Java JIT Compilers –Worked on all aspects of C/C++ toolchain including inhouse port of GCC & GNU standard C++ libraries Joined Dyalog in April 2010 Technical Road Map - Spring 2016
9
#DYNA16 Core Performance: PQA Technical Road Map - Spring 2016 8
10
#DYNA16 Core Performance: PQA Technical Road Map - Spring 2016 9
11
#DYNA16 Core Performance: Primitives Dyadic ⍳ family (especially on small integers and characters) Partition pseudo-operator b( ≢ ¨ ⊂ )x More special cases for Rank ⍤ and Key ⌸ Dyadic ⎕ FMT and dyadic ⍕ Inner product Boolean reductions Windowed ⌈ / and ⌊ / Grade up ⍋ and down ⍒ on permutations And on and on… Technical Road Map - Spring 2016 10
12
#DYNA16 Core Performance: Primitives Technical Road Map - Spring 2016 11
13
#DYNA16 Core Performance: Primitives Technical Road Map - Spring 2016 12
14
#DYNA16 Core Performance: C Compilers Windows: from Visual Studio 2005 to 2015 AIX: from XL C/C++ 12.1 to 13.1 Linux: from GCC 4.3.3 to 5.3.0 Still to come: Better vectorised code on all platforms Technical Road Map - Spring 2016 13
15
#DYNA16 Compilation: Bytecode execution Gives a factor of 1.5 to 2 speed-up on code using small arrays Version 15.0 work: –Better support for nested dfns –Better support for global variables –Show compiler errors in the editor –Plus many parser improvements Technical Road Map - Spring 2016 14
16
#DYNA16 Compilation: Co-Dfns Compiler by Aaron Hsu (Indiana University) Support for Boolean vectors in the compiler Basically complete scalar runtime Most mixed functions, and operators Full GPU execution by default in most cases Support for caching data on GPU Improved reliability and stability fixes across the board Better user documentation and interface Still very experimental, first client project in 2016 Technical Road Map - Spring 2016 15
17
#DYNA16 Compilation: Harnessing the GPU GPU algorithms: see Aaron Hsu’s work CPU/GPU communication: fully automatic offloading is still an unsolved problem We need to build expertise We need to find a sweet spot for APL Technical Road Map - Spring 2016 16
18
#DYNA16 Core Language: New primitives Cut, Tessellate Merge Under (aka Dual), Obverse Enclose-if-Simple Link Nub-sieve Where Technical Road Map - Spring 2016 17
19
#DYNA16 Core Language: Rationalisation Dynamic scope for dfn error guards New :Trap … :Finally … :End Localising ⎕ DM and ⎕ EN Notation for array constants Technical Road Map - Spring 2016 18
20
#DYNA16 Interfacing with other languages R Python Julia MATLAB Technical Road Map - Spring 2016 19
21
#DYNA16 Scripting: for applications Support for editing scripts is now built into the interpreter Already starting to replace the lower layers of SALT Will be a key part of APL packages, or the “APL Project Project” Technical Road Map - Spring 2016 20
22
#DYNA16 Scripting: for utilities Use APL as a scripting language in a UNIX shell… Or on Windows… Or both! $ cat fib #!/usr/bin/apl fib←{ ⍵∊ 0 1: ⍵ +/ ∇ ¨ ⍵ -1 2 } ⎕ ←fib¨ ⎕ $ echo 5 6 7 |./fib 5 8 13 $ Technical Road Map - Spring 2016 21
23
#DYNA16 22 CTO Goals Harness the GPUs for APL number crunching Learn from, and interface with, Julia, Python etc. Keep Dyalog portable: get it running on mobile devices and “headless” environments Keep pushing core performance (aka business as usual) Technical Road Map - Spring 2016
24
#DYNA16 23 Future Platforms 90% of Current Revenue is based on Microsoft Windows and IBM AIX. New applications *are* still being started on Windows But “Cross Platform / Cloud” is growing Typical: Develop on Windows, Deploy on Linux in Cloud Our Goal is to allow you to: Develop on any Dyalog platform, Deploy on any (other) Dyalog platform Technical Road Map - Spring 2016
25
#DYNA16 24 Cross Platform Requirements 1.Portable Interpreter without platform dependencies –Including “headless” Microsoft Windows 2.Bi-directional Interfaces to platform tools –Standard shared / dynamic library support –Use platform API’s like Microsoft.NET –Call portable languages like Python and JavaScript –Scripting 3.Portable User Interfaces –Ensure APL engine can be integrated in portable 3 rd party UI tools (Xamarin, Cordova, JavaScript) –Portable UI tool integrated with APL (ability to generate HTM5/JavaScript) 4.Portable Development Environment –RIDE + support for 3 rd Party IDEs Technical Road Map - Spring 2016
26
#DYNA16 25 1. Portable Interpreter Continue Support for Mainstream Platforms: –Microsoft Windows, IBM AIX, Linux Recent Additions: –ARM Linux (Raspberry Pi) –Apple Mac / OSX Probably next: –Android –Headless Microsoft Windows Research: –Apple iOS (iPad, iPhone) –Window Mobile Technical Road Map - Spring 2016
27
#DYNA16 26 2. Cross-Platform Integration Historically, Dyalog has integrated with Microsoft infrastructure: DDE, then OLE/COM, finally Microsoft.NET. In the future, we need to support cross-platform mechanisms, such as: Call APL as a shared library (.dll/.so) Use APL as a “scripting language” Web Service frameworks + JSON CXO: would like to see an APL Engine which can be configured to be a Web Service/Server “out of the box” Technical Road Map - Spring 2016
28
#DYNA16 27 3. Portable User Interfaces Microsoft Win32 / ⎕ WC, the workhorse of commercial applications since 1990, is still available Energy put into Windows Presentation Foundation may still pay dividends on future Microsoft platforms But: HTML5 / Javascript appears to be “the future” (for a decade or two) Technical Road Map - Spring 2016
29
#DYNA16 28 3. Portable UI Choices Wide variety of Web Server development tools can call APL Server-Side (via Microsoft.NET, as a DLL or Web Service) 3 rd Party Tools for Portable App Development –Examples: Apache Cordova and [Microsoft] Xamarin –We need to ensure APL engines can be integrated Use APL to generate and Serve HTML/JS –MiServer – generate HTML/JS with SyncFusion & JQueryUI –Roll your own (FlibDb + Rumba) Project “PUNT” (Portable UI / New Technology) –Portable Library for HTML rendering & HTTP Interception –Create Web Servers & Desktop/Phablet UI from same Source Code Technical Road Map - Spring 2016
30
#DYNA16 29 4. Portable “IDE” RIDE is a Graphical IDE available under Windows, Mac OSX and Intel Linux –Can also connect to APL on IBM AIX or Raspberry Pi –Very useful for debugging Windows Services, which are unable to interact with desktop (runtimes too) First version shipped with v14.1 –RIDE 3.0 (v15.0) adds a Workspace Explorer and ability to launch server-side processes using SSH Standard IDE for Mac OSX version –From v15.0 also standard IDE for Linux Technical Road Map - Spring 2016
31
#DYNA16 30 4. Open RIDE Protocol Once RIDE 3.0 is complete, we will open source it and document the protocol (now JSON-based) You will be able to develop custom monitoring applications –Dyalog will also develop a “Process Manager” Makes it possible to develop 3 rd Party IDE’s plugin to be developed this summer –By a Dyalog Intern from the Ukraine We hope to see support for and EMACS too. Technical Road Map - Spring 2016
32
#DYNA16 31 4.0 New RIDE Protocol API is based on JSON: When the user presses, RIDE should send e.g.: ["Edit",{"win":123, "text":"a←b+c×d", "pos":4, "unsaved":{"124":"f"}}] The interpreter will respond later with something like: ["OpenWindow",{"name":"f", "text":["r←f a", "r←(+ ÷ ≢ )a"], "token":123, "currentRow":0, "debugger":false, "entityType":1, "offset":0, "readOnly":false, "size":0, "stop":[1], "tid":0, "tname":"Tid:0"}] Technical Road Map - Spring 2016
33
#DYNA16 32 Other Cross Platform Tools We aim to design all tools to work cross-platform: UI: MiServer & HTML Rendering Engine SQAPL (ODBC/SQL) CONGA (TCP) Cryptographic Library JSON & XML V15.0 File Functions – ⎕ NEXISTS, ⎕ NMKDIR, ⎕ NDELETE, … Interfaces to R, Python, Julia, etc… Source Code Management / Build Tool Technical Road Map - Spring 2016
34
#DYNA16 33 Goals as CXO: More Time For Understanding User Requirements –Not just “Professional Developers” –Renewed Focus on: Domain Experts / Prototyping New Markets Creating more Formal, Well Researched Designs Co-ordinating CTO / Devt & APL Tools Group –More careful prioritisation of long-term plans –More testing, documentation and samples Technical Road Map - Spring 2016
35
#DYNA16 34 Goals as CXO, continued… Work with CEO, Documentation and Social Media teams to create training materials and significantly extend our online presence Work with (and as a member of) the APL Tools Team to design & implement create Tools, Tutorials and Samples Venture outside the APL community and reach out to –Dynamic and functional language communities Python, Julia, etc. –“Domain Expert” communities Finance, Math, Engineering, maybe even Computer Science –Take inspiration from other tools and communities Technical Road Map - Spring 2016
36
#DYNA16 35 Recap - Priorities CTO is driving: Core Performance & Language Features Harnessing Parallel Hardware Putting Interpreter on New Platforms CXO driving: Training Materials & OnLine Presence Cross-Platform Application Development Technical Road Map - Spring 2016
37
#DYNA16 36 Evangelism “Dyalog is a modern, array-first, multi-paradigm programming language, which supports functional, object-oriented and imperative programming, based on an APL language kernel.” Technical Road Map - Spring 2016
38
#DYNA16 37 Technical Road Map - Spring 2016
39
#DYNA16 38 “Dyalog is a modern, array-first, multi-paradigm programming language, which supports functional, object-oriented and imperative programming, based on an APL language kernel.” Technical Road Map - Spring 2016
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.