Overview
Exploring the realm of technology through a non-technical lens, this guide offers invaluable insights into key tech concepts for non-techies. With clarity and accessibility, it demystifies complex jargon and provides a comprehensive understanding of fundamental technological principles.
Notes
Hosting Considerations:
Server type - does not matter for the average user and use case
Disk space allowance - size of website determines memory needed
Bandwidth - how many people you can service at once
Reliability and uptime
Price
Different Types of Hosting:
Shared hosting: multiple users share single server. Typically cheapest but most inflexible
Dedicated server: Increase in cost for added flexibility and control. Good if you have several websites, significant traffic or substantial database use
Virtual dedicated server: Mix between shared and dedicated, you can customize the server but multiple customers can use the same server
Collocated hosting: You own server but delegate its management to a hosting provider
Compiled languages: Use a compiler to translate the code into language that the computer's processor understands. Examples is C or Java. Compiled languages are fast to run but slow to develop
Interpret languages: Are translated in real time. The execution is one or two orders of magnitude slower than compiled systems. Often use more memory but are quicker to develop. Example PHP, Python
Taxonomies of high-level languages
Imperative languages: Focus on how to achieve an objective and are typically written as a sequence. Ex. C and Java
Declarative languages: Focus on the what of an objective and leave the how to the programming language. Ex. SQL
Functional languages: Rely on functions and recursions as their main method of computing instead of stored variables or iterations. Ex. CAML, Standard ML
Object-oriented languages: Create objects to store information and execute commands. Examples C++ and Java
Scripting languages: share many qualities with imperative and object-oriented programming. Examples Python and Ruby
Parallel programming languages: allow for multiple execution sequences to proceed concurrently.
Query languages: are used to interact with a database
Markup languages: use tags and special characters to give structure to a document. Example is HTML and XML
Evaluating programming languages for their suitability, technical and design considerations:
Naturalness of application, refers to the relative ease of coding your application in a particular language based on the functionalities and constructs it provides. Object-oriented programming languages became popular in part because they allow the programmer to think about the solution to the problem in many ways and therefore fit many programmers' uses
Reliability refers to a program's ability to perform the same way each time. It is cheaper to catch errors at compile time rather than at runtime. Compiled languages typically take longer to develop and execute. The trade off between cost of execution and reliability is one that programmers constantly face.
Support for abstraction, refers to the ability to define and use complicated structures or operations in a way that allows many of the details to be ignored
Portability refers to the ease with which your program can be translated into another programming language.
Efficiency refers to the time that the code takes to execute often at a cost to abstraction
Practical considerations:
Applicability: If you have the wrong tool for the job, your code might become unnecessarily complicated
Documentation: refers to resources that explain a language's syntax, usage and constructs.
Development time: Historically, speed and memory usage were key factors in choosing a language, because processors were slow and memory was limited. Now, however, hardware is cheap and becoming cheaper. Now organizations tend to prioritize development time over execution time.
Reliably updated: More popular languages, such as PHP and Python, tend to be updated regularly based on programmer feedback.
Maintainability: This practical factor relates to a language's simplicity and readability.
Committed community: Another benefit of popular languages is the community of programmers using it.
Talent pool: The committed community also comprises your target market for technical hires.
APIs, libraries and tools: A large community of programmers might post tools that you can plug into your program to save the time of programming it yourself.
Integrated development editors (IDEs): This one-stop application has an editor for typing code, a source compiler to translate the code, a debugger to help spot any errors in the program, and a few other project management-related tools.
The Front End: Presentation
Wireframes are simple blueprints for a screen. Putting together wireframes forces you to think about information design and interaction design.
Information design relates to how you present all of the content or messaging you want to communicate to the user
Interaction design refers to the series of actions you want the user to perform to complete some overall task
User interface (UI) is how your application looks
User experience (UX) is how your user feels about using your application
HTML is a markup language that defines the content and structure of pages
Cascading Style Sheets (CSS) is a language that tells the browser how to style and position the various HTML/XHTML elements.
Eight general styles categories:
Type: Font, color
Background: Color, image
Block: Word spacing, line spacing
Box: Width, height, float
Border: Style, color
List: Style, position
Positioning: Position, height, visibility
Extensions: Page break, cursor
JavaScript is a object based scripting language that allows interactivity (e.g. Drop down menus)
Ajax is asynchronous JavaScript and XML combined. Allows a webpage to create functions in the background
Databases: The Model
Four components: Data, hardware, software and users
A database management system (DBMS) is responsible for defining the database and storing, manipulating and sharing the data across users and applications
Four most common data models: Relational model, non-relational model, the object-oriented model, and the object-relational model.
Application Programming Interfaces (APIs)
Comentários