Problem Comprehension & Metaprogramming

Problem Comprehension & Metaprogramming

Problem Comprehension & Metaprogramming How do we program, and how can computers help? by Kenny Harvey 2014 - 10 - 06 Topics In PL&C - Columbia University 1 Agenda • What is programming (in a general sense)? • How do we comprehend problems? • Metaprogramming • Topics for future work 2014 - 10 - 06 Topics In PL&C - Columbia University 2 What is programming (in a general sense)? • “Writing computer programs” – circular/loose • “Describing a solution to a computer, so it may solve a problem” • Requires translation from the logical definitions of problems, through the abstract concepts in which humans think, to the electrical signals computers understand 2014 - 10 - 06 Topics In PL&C - Columbia University 3 What is programming (in a general sense)? (Comprehension) (Solution) (Description) Describing a solution to a computer, so it may solve a problem 2014 - 10 - 06 Topics In PL&C - Columbia University 4 What is programming (in a general sense)? “Theory of Programming Behavior” – Brooks (1977) [1] • Understanding (Comprehension) ??? • Method-finding (Solution) Metaprog. • Coding (Description) Most PL 2014 - 10 - 06 Topics In PL&C - Columbia University 5 Agenda • What is programming (in a general sense)? • How do we comprehend problems? • Metaprogramming • Topics for future work 2014 - 10 - 06 Topics In PL&C - Columbia University 6 How do we comprehend problems? No formal definitions, but empirically: • Pattern-recognition – Brooks (1977) [1] • “Genius is having seen it before” – Prof. Aho • Verbal/Numerical WM – Siegmund (2014) [2] • Levels of abstraction 2014 - 10 - 06 Topics In PL&C - Columbia University 7 How do we comprehend problems? [Current] 2014 - 10 - 06 Topics In PL&C - Columbia University 8 How do we comprehend problems? 10000011011111011111 11000000000001110101 00000100100000110100 01011111110000000001 2014 - 10 - 06 Topics In PL&C - Columbia University 9 How do we comprehend problems? 837DFC00 7504 8345FC01 2014 - 10 - 06 Topics In PL&C - Columbia University 10 How do we comprehend problems? cmpl $0; -4(%rbp) jne .L2 addl $1; -4(%rbp) 2014 - 10 - 06 Topics In PL&C - Columbia University 11 How do we comprehend problems? if(!x)++x; 2014 - 10 - 06 Topics In PL&C - Columbia University 12 How do we comprehend problems? Secondary Notation – Schrepfer (2009) [3] if ( !x ) ++ x; How can we bridge this gap? Hint: We’re programmers! 2014 - 10 - 06 Topics In PL&C - Columbia University 13 Agenda • What is programming (in a general sense)? • How do we comprehend problems? • Metaprogramming • Topics for future work 2014 - 10 - 06 Topics In PL&C - Columbia University 14 Metaprogramming • Even more circular definitions • “Describing a solution to a computer, so it may solve describing solutions to computers, so they may solve problems ” • C macros, JITs, Lex/YACC • Not just Comprehend Solve Describe… 2014 - 10 - 06 Topics In PL&C - Columbia University 15 Metaprogramming • Task is to comprehend, solve, and describe: • Comprehension • Solution • Description Comprehension Solution Description Comprehend ? Abstraction Linguistic WM Solve ? Cog. Psych. Lang. Theory Describe ML? Meta Lang. Grammars 2014 - 10 - 06 Topics In PL&C - Columbia University 16 Metaprogramming • Let’s revisit our abstraction • Does it suggest comprehension? • Can we improve? if ( !x ) ++ x; 2014 - 10 - 06 Topics In PL&C - Columbia University 17 Metaprogramming 2014 - 10 - 06 Topics In PL&C - Columbia University 18 Metaprogramming 2014 - 10 - 06 Topics In PL&C - Columbia University 19 Metaprogramming 2014 - 10 - 06 Topics In PL&C - Columbia University 20 Demo http://harveyserv.ath.cx/adhoc_demo/ [5] 2014 - 10 - 06 Topics In PL&C - Columbia University 21 Agenda • What is programming (in a general sense)? • How do we comprehend problems? • Metaprogramming • Topics for future work 2014 - 10 - 06 Topics In PL&C - Columbia University 22 Topics for Future Work • Semester project: logic database, autocomplete • More software engineering tools • Tags for “Done”, “Tested”, could produce “Taint” system • Auto-generate tests • Easier searching / browsing • Background Cog. Psych. literature for UI • Mobile coding! 2014 - 10 - 06 Topics In PL&C - Columbia University 23 References 1. Brooks R. Towards a theory of the cognitive processes in computer programming . Int J of Man-Machine Studies, 1977. 51 (2): p197-211. 2. Siegmund J K, et al. Understanding Understanding Source Code with Functional Magnetic Resonance Imaging . Comm. of the ACM, 2014. 3. Schrepfer M W, et al. The Impact of Secondary Notation on Process Model Understanding . Lecture Notes in Biz Info Proc., 2009. 39 : p161-175. 4. Myers B A. Taxonomies of Visual Programming and Program Visualization . J of Vis. Lang. and Comp., 1990. 1(1): p. 97-123. 5. http://harveyserv.ath.cx/adhoc_demo/ 2014 - 10 - 06 Topics In PL&C - Columbia University 24.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    24 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us