Software Notes - Weatherford PDF

Title Software Notes - Weatherford
Author Hannah Barron
Course Intro New Media
Institution University of Georgia
Pages 10
File Size 387.3 KB
File Type PDF
Total Downloads 106
Total Views 165

Summary

Weatherford...


Description

Sunday, September 1, 2019

Software Notes What is Code? By Paul Ford, Required Reading

• Professor likes author’s perspective of programming being mystifying." • 11 million professional software developers; 7 million or so hobbyists; multiple kinds of programming languages; programmers and coders for everything."

• Coders are people who are willing to work backward to that key press. Certain temperament and interest."

• If coders don’t run the world, they run the things that run the world. • Software are basically machines — that are run by code we use. • Programmers use recursive jokes." •Every character truly, truly matters. Everything typed has to be explicit. •> use programming that looks like they’re doing math to humans. Computer science is no more about computers than astronomy is about telescopes. Algorithms turn programs into functions. Improvements in algorithms are super important.

•A computer is a clock with benefits. They all work the same, doing secondgrade math one step at a time. Billions of tiny operations happen at the same time and add up >> resulting in amazing things."

• So many things are computers, or will be. You have to understand what we use computers for and their limits. The computer and its peripherals are materials. The code is the art."

• Hardware >> data >> processing >> algorithms >> programming languages." • Hitting the key on a keyboard sends a scan code. The computer is waiting for a signal from a keyboard. Process/application (short answer).

• Much hardware comes with some software, then you buy more." • In the 1950s, and especially in the 1980s, a new craft of developers emerged. They can control the machines, and coders create infinitely reproducible units of digital 1

Sunday, September 1, 2019 execution that we call software, hoping to meet the needs of the marketplace. Systems built are used to manage the global economic infrastructure (still keep it in perspective with things before in power however). Coders run the things that run the world."

•Software is everywhere — industry of standardized parts."

•How does code become software? String: arbitrary sequence of letters, language is K, APL, GNU, etc. Programming can look like a lot of different things, like built-in functions or others. 88% of spreadsheets contain errors, fyi. Code is a sequence of symbols copied and pasted from elsewhere. Coding is a broad human activity. Code has to be transformed into a machine language >> explicit list of instructions that can be carried out by interconnected logic gates, thus turning code into software (something executed)."

• A compiler is software that takes the symbols you typed into a file and transforms them into lower-level instructions. Every character matters. The program becomes a tree diagram. Bytes in boxes have to point to each other. Done in routines >> strings, arrays, trees. Compilation is one of the denser subjects in computer science."

• What is an algorithm? An algorithm solves a problem, and a great algorithm gets a name. Forth >> PostScript >> PDFs. Other example of code: Python. A programming language is a system for encoding, naming, and organizing algorithms for reuse and application. It’s an algorithm management system. Algorithm >> function >> run when software is executed. About understanding the efficiency of algorithms. Companies are built on fundamental computer science and pay great attention to efficiency. Hardest work: getting around things that aren’t computable >> like data mining, or artificial intelligence. DRY principle for tenets of programming."

•> most popular languages look like it, came after B."

• Programming languages have two jobs — packaging, etc. • On slide there are important programming lingo to know — discussed later in reading and notes.

• Standup: type of meeting; agile methodology; everyone standing to make the meeting go quickly in software development business.

• Also functional specification, user stories, wireframe mockups, Standup, Slack, and commits (your changes/revisions in software — not on quizzes). Pivot: transition in startup lingo for product launch.

• Different languages optimize for different things to attempt to solve different problems.

• Layers involved in making a computer work >> “turtles all the way down” regression. More problems it takes care of >> higher levels of abstraction."

• basically a kernel (lowest level of operating system) >> manages memory and runs software — a large collection of very small utility programs, and a “shell” that helps you knit programs into “shell scripts.” Coincided with the rise of various networks that today we refer to collectively as the Internet. Simple language that manages every last part of the computer. Many steps; fast software. STEPS >> OPTIMIZATIONS. Fun fact: created coding introduction: “hello world!” Good for large software or hardware companies. Uses squares and small, repeatable units. C is pretty important and a language you use for building systems. Organize codes into libraries >> “programming in the large.”"

• The Corporate Object Revolution: What is object-oriented programming? A filing system for code. C is just a bunch of functions and doesn’t have a consistent way of naming things. Gives programmers a great way to name things — a means of building up a library. Example: Smalltalk (from Xerox, about the distant future); different than C which was built from the industrial monolith AT&T and Bell Labs. Represents the world differently than C. Smalltalk was a big system, giving abstraction over the entirety of reality and human things, not just the computer system like C. Boundaries in language are fuzzed by design. Vision of the computer as its own, native medium. Understanding of philosophy of world; hierarchy of classes."

• Python: Also very popular. Multiparadigm, object-oriented but not rigid, and is widely understood to be easier for programmers to use than C b/c more abstractions to reuse. Usually slower than C because of the abstractions. Referred to as a “glue language” >> take code from “lower-level languages” and write “wrapper functions” >> embed older, faster code in the newer, slower easier-to-use system. Hard to connect with Java and Python; has their own versions for Python to run inside."

• The idiom of a language is part of its communal identity. Python is also very important in terms of its efforts in labor and culture of users."

• Why Are Coders Angry? Languages have agendas. Coding is a culture of blurters and bike shedding. Code culture is very broad but its core is the Silicon Valley engine of progress. The Valley mythologizes young geniuses with vast sums. This culture works … somewhat. They have to puzzle it out, have to carve out cognitive territory, and figure out all the new codes. "

• issues with sexual harassment, racial diversity, and sexist content. Will now publish racial/gender numbers (may be a pipeline issue >> debate, but not true >> leave due to culture). Work to increase representation, diversity, and inclusion. Apple has flaws but has gotten better (diversity in keynote)."

• The Legend of the 10x Programmer: Programming has twin cults of genius and youth. The 10x programmer is more productive than the usual proletariat. Intense focus. Skills in time and consumption; obsessive. Managers and older coders have fewer job options.

• Technical debt: software often launches without everything buttoned up, and as systems evolve and change, a kind of code debt builds up. Like infrastructure debt."

• Why Are There So Many Languages: 1,700 languages cluttering up the computing landscape. Cobol: data-description language but largely associated with the Year 2000 problem. Banks love it and it’s on mainframes, but no one else likes it. Fortran (like C) and Lisp (mathematical research >> but blurs line between code and data; used for flight information but otherwise not b/c of clarity issues) are still in use today."

• HTML: HyperText Markup Language — encoding format for Web pages. Arguments if it counts as programming or not."

• Relationship Between Code and Data: Data comes from everywhere. Data management is the problem programming is supposed to solve. Having computers generates more data. We’re coming up with new categories and things like “big data.” Data originates from everything and is everything (examples: Spotify, eLC, Housing and StarRez, texts, photos/videos — big part of data storage; lots of user-generated data we are involved with; results from our actions). Machine-generated data: buses reporting locations to service; smart services; cameras. Data management is the problem programming is supposed to solve. More data have >> be more efficient and make better informed decisions instead of going off a hunch.

•Where does data live? Big companies have huge databases. Most prevalent is relational database >> SQL represent the world

Sunday, September 1, 2019 using tables, which have rows and columns. IDs are important in databases. CRUD: create, read, update, delete >> a lot of code is managing CRUD operations. SQL, pronounced “sequel,” is a relational database. Data part of structured query that can be run and is used as the grandfather of relational database (and databases in general) languages.

• *Java v. Java Script: Java is a cross-platforming language sold on the original dream WORE (write once, read everywhere). Programming language to span on any computable environment. Hard to do but mostly successful (doesn’t work great ever on Java), applets aren’t great; but it does work which is why there is still Java. Second life: foundations used in Android development and apps. A lot of Java is done in an object-oriented manner, but programming languages are rarely called object-oriented.

• *Java Script: learn in NMIX 4010. Scripting language designed to do very simple things (dump a document to you; responses; countdown timers or cursor trails). So widely deployed in browsers >> used more and more >> Java Script in apps in mid-2000s; currently powers Google Maps. Part of the web and 3 pillars, used heavily in browsers. Originally not conceived as fullfledged program but part of the web as designed for interactivity in web, but pushed to other things; Java was meant to be a full-fledged program with a run-time and a designed programming language. Java Script was never meant to be a programming language.

• Java//The Language of White Collars: big, corporate programming. Born at Sun Microsystems, object-oriented, and looks like C and C++. Ran in web browser, applets (“crapplets”), and could take over the Web. Limitations: ran very slow and had security/update concerns. When Java ran inside a Web browser as a plug-in, it never worked well. It was slow and clunky, and the Internet frequently crashed. But free to download, and it was designed to be useful. Why successful: big language (large class library), automatically generated documentation, and ran everywhere on a “virtual machine.” It became more popular for application servers. Some languages let you use the same platform, but are for different things."

• Windows Code >> Microsoft wants to be best and have their code run on their computers. Windows is statically-typed, scripting, data-driven, and functional."

• Microsoft usually goes head-to-head with Apple for the most valuable company. Microsoft is very successful. Microsoft is primarily an enterprise company, in terms 6

Sunday, September 1, 2019 of making money; “business business.” Apple is mainly a consumer company; most of Microsoft’s money is make from corporation/business contracts (data management/software for subsidiaries, etc). NMI tends to be consumer-focused and institutional-biased (meaning Apple)."

• Enterprise programming; codes to make software. Some new languages run on top of Java to get the task done."

• Clojure: new, modern version of Lisp. Access to Java class library. Beloved but not widely used."

• Things are fluid in programming >> languages are liquid infrastructure." • No components are truly off-the-shelf." • Netscape: the first huge commercial browser." • JavaScript: linkage with Java is in the marketing of the name. Software-delivery platform; web browser — most widely deployed language runtime in the world."

• Ajax: Asynchronous JavaScript and XML —set of technologies that transforms web browsers into software; how we have the current Internet today. Not as controlled, slower, not a lot of niceties. Every pixel on a Webpage can be manipulated; multiple platforms. "

• Also used to make companies’ own web browsers like Apple’s Safari and Google’s Chrome which runs fast when JavaScript is fast. JavaScript eventually became the server. Node.js for server creation and module libraries. Good with handling lots of simultaneous users. Huge library of packages >> bits of software that do specific things."

• NPM: Node Package Manager — creates packages but unwieldy >> why helpful to have the libraries >> lot to pick from."

• PHP: Personal Home Page/Forms Interpreter/Hypertext Preprocessor >> used to be the default terrible choice >> now JavaScript. A lot of good sites use PHP which doesn’t make sense. Super important in the coding ecosystem. Super prevalent; runs on web server servicing the page, like Word Press. Recursive acronym for name. Gets a lot of things done like on Facebook, etc. Professional programmers don’t like it because it’s old and doesn’t have lots of advances/additions to it. BUT GETS THE JOB DONE.

7

Sunday, September 1, 2019

• IDE (Integrated Development Environment): software and kits used to make software. Example: Xcode— iOS app to write software and create an app. Has an SDK (software development kit; non-standard library there for you to use) and API (application programming interfaces). Developers are good at creating these apps and software — notably Apple and Microsoft. Control a computing environment >> you can move the market. Free software stimulates the development of even more software. Compile with one command. Rearrange abstractions and things that already exist >> what Apple has done for 30 years >> why success of all tech moguls in Silicon Valley. Loops and loops > money to software giants > cycle continues, an ecosystem."

• Framework: product pitch; to build applications and servers. Examples: Python’s Django and Ruby on Rails. It locks you into a way of thinking. Issues with “premature optimization” and “NIH” (not invented here). Frameworks: generic, bundled, arrive with a PR focus. Most are free and spread organically to solve problems."

• Debugging : programming is debugging. It is the expectation that things won’t work. Constructs for catching failures: characterized by what’s wrong. Stack overflow of bugs. Much of work isn’t writing new lines of code but why lines of code aren’t working right. Part of life. “Turtles all the way down” analogy.

• Test-driven design: codes that check the functions in other code. If the functions run, the test has passed and the code works. Relentless testing; often used is SQLite (smartphone database) which has lots of tests and is widely respected and used. Bugs are just a part of life, part of programming. Automated testing is also good for suggesting to and how to write respectable code."

• impression of human desire towards excellence and understanding. GitHub of commits. Combination news feed and backup system.

8

Sunday, September 1, 2019 Fix bugs and add features >> new version! Record of code and commits. Increased automation. Policies for deploying fresh code."

• Programmers use Slack to talk about data (not code). " • Tests and version control are triggers for actually shipping code." • The choice of a main programming language is the most important signaling behavior that a technology company can engage in. Good to be fast but there are also other factors to consider. It needs to be characteristic of who is using it, and it also needs to work."

• Managing Programmers: “agile methodology” — regular coordination among programmers, set of rituals and norms to follow for programs to work well with other programs. Break into user stories and file into issue-tracking system."

• Coding is great to learn about the future and how to work with all the world’s databases. "

• The Valley optimizes everything, and makes the software and its keepers the middlemen. New inventions and companies/startups want to disrupt the industry and the norm (Amazon, Uber, Microsoft Office)."

• Pillow: most commonly used image-processing toolkit. Pillow — module of a library. Know how to work for coding."

• Why so many programming languages: optimized to perform different tasks, new and improved functionality; older languages still needed for many reasons including supporting legacy projects. Used in airlines, banking (large sets of data and financial incentive, some push for better), and data tracking logistics (not much incentive there, old system works)/industrial processes.

• C: one of the oldest still in effect — powerful and useful; Bell; principal development language for Unix; “granddaddy” of programming languages; rawest form of computer code — no abstractions. Manual memory and processing. Very careful >> very fast. Super risky. Operating systems and those servers. Sorta like Latin — everything derives from and has roots.

• Linux: free open-source software (free to operate); will use in NMIX 4010. Powers just about everything on web b/c it’s free.

• Has C variants. 9

Sunday, September 1, 2019

• Other languages have conveniences and safety, but there are issues with speed. More abstract languages. Like automatic v. Transmission and their associated gears and control.

• Think about the model of how computers understand programming and software.

• Understand algorithms, bundling, coding culture (everything good and bad), functions, programming languages and why they exist/what, databases, Microsoft, and debugging software and testing (edge cases).

• Will have a detailed outline for quiz tomorrow!

10...


Similar Free PDFs