Categories
Java Software Engineering

James Gosling

See also Java Programming Language, Java Glossary, Java Bibliography, Java Reference materials

James Arthur Gosling, often referred to as “Dr. Java”, OC (born May 19, 1955) is a Canadian computer scientist, best known as the founder and lead designer behind the Java programming language.[3]

James Gosling 2008.jpg
BornJames Gosling
May 19, 1955 (age 65)
CalgaryAlberta, Canada
NationalityCanadian
Alma materUniversity of Calgary
(BSc, 1977)
Carnegie Mellon University
(MAPhD, 1983)
Known forJava (programming language)
TitleDr. Java
Children2
AwardsOfficer of the Order of CanadaIEEE John von Neumann Medal The Economist Innovation AwardNAE Foreign Member
Scientific career
InstitutionsSun MicrosystemsOracle CorporationGoogleLiquid Robotics[1]Amazon Web Services
ThesisAlgebraic Constraints (1983)
Doctoral advisorBob Sproull and Raj Reddy[2

Early life

James Gosling received a Bachelor of Science from the University of Calgary [4] and his M.A. and Ph.D. from Carnegie Mellon University, all in computer science.[2][5][6] He wrote a version of Emacs called Gosling Emacs (Gosmacs) while working toward his doctorate. He built a multi-processor version of Unix for a 16-way computer system[7] while at Carnegie Mellon University, before joining Sun Microsystems. He also developed several compilers and mail systems there.

Career & contributions

Gosling was with Sun Microsystems between 1984 and 2010 (26 years). At Sun he invented an early Unix windowing system called NeWS, which became a lesser-used alternative to the still used X Window, because Sun did not give it an open source license.[citation needed]

He is known as the father of the Java programming language.[8][9] He got the idea for the Java VM while writing a program to port software from a PERQ by translating Perq Q-Code to VAX assembler and emulating the hardware. He is generally credited with having invented the Java programming language in 1994.[10][11][12] He created the original design of Java and implemented the language’s original compiler and virtual machine.[13] Gosling traces the origins of the approach to his early graduate student days, when he created a p-code virtual machine for the lab’s DEC VAX computer, so that his professor could run programs written in UCSD Pascal. In the work leading to Java at Sun, he saw that architecture-neutral execution for widely distributed programs could be achieved by implementing a similar philosophy: always program for the same virtual machine.[14] Another contribution of Gosling’s was co-writing the “bundle” program, known as “shar”, a utility thoroughly detailed in Brian Kernighan and Rob Pike‘s book The Unix Programming Environment.[15]

He left Sun Microsystems on April 2, 2010, after it was acquired by the Oracle Corporation,[8] citing reductions in pay, status, and decision-making ability, along with change of role and ethical challenges.[16] He has since taken a very critical stance towards Oracle in interviews, noting that “during the integration meetings between Sun and Oracle, where we were being grilled about the patent situation between Sun and Google, we could see the Oracle lawyer’s eyes sparkle.”[9] He clarified his position during the Oracle v. Google trial over Android: “While I have differences with Oracle, in this case they are in the right. Google totally slimed Sun. We were all really disturbed, even Jonathan [Schwartz]: he just decided to put on a happy face and tried to turn lemons into lemonade, which annoyed a lot of folks at Sun.”[17] However, he approved of the court’s ruling that APIs should not be copyrightable.[18]

In March 2011, Gosling joined Google.[19] Six months later, he followed his colleague Bill Vass and joined a startup called Liquid Robotics.[1] In late 2016, Liquid Robotics was acquired by Boeing.[20] Following the acquisition, Gosling left Liquid Robotics to work at Amazon Web Services as Distinguished Engineer in May 2017.[21]

He is an advisor at the Scala company Lightbend,[22] Independent Director at Jelastic,[23] and Strategic Advisor for Eucalyptus,[24] and is a board member of DIRTT Environmental Solutions.[25]

He is known for his love of proving “the unknown”[clarification needed] and has noted but later clarified to be untrue that his favorite irrational number is √2. He has a framed picture of the first 1,000 digits of √2 in his office.[26]

Awards

For his achievement, the National Academy of Engineering in the United States elected him as a Foreign Associate member.[27]

Books

  • Ken Arnold, James Gosling, David Holmes, The Java Programming Language, Fourth Edition, Addison-Wesley Professional, 2005, ISBN 0-321-34980-6
  • James Gosling, Bill JoyGuy L. Steele Jr.Gilad BrachaThe Java Language Specification, Third Edition, Addison-Wesley Professional, 2005, ISBN 0-321-24678-0
  • Ken Arnold, James Gosling, David Holmes, The Java Programming Language, Third Edition, Addison-Wesley Professional, 2000, ISBN 0-201-70433-1
  • James Gosling, Bill Joy, Guy L. Steele Jr., Gilad Bracha, The Java Language Specification, Second Edition, Addison-Wesley, 2000, ISBN 0-201-31008-2
  • Gregory Bollella (Editor), Benjamin Brosgol, James Gosling, Peter Dibble, Steve Furr, David Hardin, Mark Turnbull, The Real-Time Specification for Java, Addison Wesley Longman, 2000, ISBN 0-201-70323-8
  • Ken Arnold, James Gosling, The Java programming language Second Edition, Addison-Wesley, 1997, ISBN 0-201-31006-6
  • Ken Arnold, James Gosling, The Java programming language, Addison-Wesley, 1996, ISBN 0-201-63455-4
  • James Gosling, Bill Joy, Guy L. Steele Jr., The Java Language Specification, Addison Wesley Publishing Company, 1996, ISBN 0-201-63451-1
  • James Gosling, Frank Yellin, The Java Team, The Java Application Programming Interface, Volume 2: Window Toolkit and Applets, Addison-Wesley, 1996, ISBN 0-201-63459-7
  • James Gosling, Frank Yellin, The Java Team, The Java Application Programming Interface, Volume 1: Core Packages, Addison-Wesley, 1996, ISBN 0-201-63453-8
  • James Gosling, Henry McGilton, The Java language Environment: A white paperSun Microsystems, 1996
  • James Gosling, David S. H. Rosenthal, Michelle J. Arden, The NeWS Book : An Introduction to the Network/Extensible Window System (Sun Technical Reference Library), Springer, 1989, ISBN 0-387-96915-2

See also

Wikimedia Commons has media related to James Gosling.

References

  1. a b I’ve moved again : On a New Road. Nighthacks.com. Retrieved on 2016-05-17.
  2. a b James Gosling at the Mathematics Genealogy Project
  3. ^ “James Gosling – Computing History”Computinghistory.org.uk. Retrieved 2017-10-09.
  4. ^ “Archived copy”. Archived from the original on 2015-06-01. Retrieved 2015-05-13.
  5. ^ Gosling, James (1983). Algebraic Constraints (PhD thesis). Carnegie Mellon University. ProQuest 303133100.
  6. ^ Phd Awards By Advisor. Cs.cmu.edu. Retrieved on 2013-07-17.
  7. ^ James Gosling mentioned a multiprocessor Unix in his statement during the US vs Microsoft Antitrust DOJ trial in 1998 “DOJ/Antitrust”Statement in MS Antitrust case. US DOJ. Retrieved 1 February 2007.
  8. a b Guevin, Jennifer. “Java co-creator James Gosling leaves Oracle”CNET. Retrieved 13 June 2020.
  9. a b Shankland, Stephen. (2011-03-28) Java founder James Gosling joins Google. CNET Retrieved on 2012-02-21.
  10. ^ Allman, E. (2004). “Interview: A Conversation with James Gosling”Queue2(5): 24. doi:10.1145/1016998.1017013.
  11. ^ Gosling, J. (1997). “The feel of Java”. Computer30 (6): 53–57. doi:10.1109/2.587548.
  12. ^ “Sun Labs-The First Five Years: The First Fifty Technical Reports. A Commemorative Issue”Ching-Chih Chang, Amy Hall, Jeanie Treichel. Sun Microsystems, Inc. 1998. Retrieved 2010-02-07.
  13. ^ Gosling, James (2004-08-31). “A Conversation with James Gosling”ACM Queue. ACM. Retrieved 2014-07-03. At Sun he is best known for creating the original design of Java and implementing its original compiler and virtual machine.
  14. ^ McMillan, W.W. (2011). “The soul of the virtual machine: Java’s abIlIty to run on many dIfferent kInds of computers grew out of software devised decades before”. IEEE Spectrum48 (7): 44–48. doi:10.1109/MSPEC.2011.5910448S2CID 40545952.
  15. ^ Kernighan, Brian W; Pike, Rob (1984). The Unix Programming Environment. Prentice Hall. pp. 97-100ISBN 0-13-937681-X.
  16. ^ Darryl K. Taft. (2010-09-22) Java Creator James Gosling: Why I Quit Oracle. eWEEK.com
  17. ^ My attitude on Oracle v Google. Nighthacks.com. Retrieved on 2016-05-17.
  18. ^ “Meltdown Averted”Nighthacks.com. Retrieved 2017-03-13.
  19. ^ Next Step on the Road. Nighthacks.com. Retrieved on 2016-05-17.
  20. ^ “Boeing to Acquire Liquid Robotics to Enhance Autonomous Seabed-to-Space Information Services”. December 6, 2016.
  21. ^ Darrow, Barb (May 23, 2017). “Legendary Techie James Gosling Joins Amazon Web Services”Fortune.com. Retrieved 23 March 2018.
  22. ^ Typesafe — Company: Team. Typesafe.com. Retrieved on 2012-02-21.
  23. ^ James Gosling and Bruno Souza Join Jelastic as Advisers. InfoQ.com. Retrieved on 2014-11-24.
  24. ^ Eucalyptus Archived 2013-04-25 at the Wayback Machine. Eucalyptus.com Retrieved on 2013-04-22
  25. ^ “James Gosling”DIRTT Environmental Solutions Ltd.
  26. ^ UserGroupsatGoogle (29 November 2010). “James Gosling on Apple, Apache, Google, Oracle and the Future of Java”YouTube. Retrieved 20 January 2018.
  27. ^ “NAE Members Directory – Dr. James Arthur Gosling”NAE. Retrieved March 29, 2011.
  28. ^ The 2002 Economist Innovation Award Winner Archived 2012-04-22 at the Wayback Machine.
  29. ^ “Flame Award”Usenix.org. 6 December 2011. Retrieved 20 January 2018.
  30. ^ “Governor”. Archived from the original on February 7, 2008. Retrieved August 28, 2016.. February 20, 2007
  31. ^ ACM Names Fellows for Computing Advances that Are Transforming Science and Society Archived 2014-07-22 at the Wayback MachineAssociation for Computing Machinery, accessed 2013-12-10.
  32. ^ “IEEE JOHN VON NEUMANN MEDAL : RECIPIENTS” (PDF). Ieee.org. Retrieved 20 January 2018.
  33. ^ Computer History Museum names James Gosling a 2019 Fellow

Categories

Sources:

Fair Use Sources:

Categories
Java Software Engineering

Java Glossary

See also Java Programming Language, Java Bibliography, Java Reference materials

” (LerJav)

abstract:

Java abstract keyword: “The Java abstract keyword is used to declare Java abstract methods and Java classes. An abstract method has no implementation defined; it is declared with Java arguments and a Java return type as usual, but the body enclosed in curly braces is replaced with a semicolon. The implementation of a Java abstract method is provided by a Java subclass of the Java class in which it is defined. If an abstract method appears in a class, the class is also abstract. Attempting to instantiate an abstract class will fail at compile time.” (LerJav)

annotations

Metadata added to Java source code using the @ tag syntax. Annotations can be used by the compiler or at runtime to augment classes, provide data or mappings, or flag additional services.

Ant

An older, XML-based build tool for Java applications. Ant builds can compile, package, and deploy Java source code as well as generate documentation and perform other activities through pluggable “targets.”

Application Programming Interface (API)

An API consists of the methods and variables programmers use to work with a component or tool in their applications. The Java language APIs consist of the classes and methods of the java.lang, java.util, java.io, java.text, java​.net packages and many others.

application

A Java program that runs standalone, as compared with an applet.

Annotation Processing Tool (APT)

A frontend for the Java compiler that processes annotations via a pluggable factory architecture, allowing users to implement custom compile-time annotations.

assertion

A language feature used to test for conditions that should be guaranteed by program logic. If a condition checked by an assertion is found to be false, a fatal error is thrown. For added performance, assertions can be disabled when an application is deployed.

atomic

Discrete or transactional in the sense that an operation happens as a unit, in an all-or-nothing fashion. Certain operations in the Java virtual machine (VM) and provided by the Java concurrency API are atomic.

Abstract Window Toolkit (AWT)

Java’s original platform-independent windowing, graphics, and UI toolkit.

Boojum

The mystical, spectral, alter ego of a Snark. From the 1876 Lewis Carroll poem “The Hunting of the Snark.”

Boolean

A primitive Java data type that contains a true or false value.

bounds

In Java generics, a limitation on the type of a type parameter. An upper bound specifies that a type must extend (or is assignable to) a specific Java class. A lower bound is used to indicate that a type must be a supertype of (or is assignable from) the specified type.

boxing

Wrapping of primitive types in Java by their object wrapper types. See also unboxing.

byte

A primitive Java data type that’s an 8-bit two’s-complement signed number.

callback

A behavior that is defined by one object and then later invoked by another object when a particular event occurs. The Java event mechanism is a kind of callback.

cast

The changing of the apparent type of a Java object from one type to another, specified type. Java casts are checked both statically by the Java compiler and at runtime.

catch

The Java catch statement introduces an exception-handling block of code following a try statement. The catch keyword is followed by one or more exception type and argument name pairs in parentheses and a block of code within curly braces.

certificate

An electronic document using a digital signature to assert the identity of a person, group, or organization. Certificates attest to the identity of a person or group and contain that organization’s public key. A certificate is signed by a certificate authority with its digital signature.

certificate authority (CA)

An organization that is entrusted to issue certificates, taking whatever steps are necessary to verify the real-world identity for which it is issuing the certificate.

char

A primitive Java data type; a variable of type char holds a single 16-bit Unicode character.

class

The fundamental unit that defines an object in most object-oriented programming languages. A class is an encapsulated collection of variables and methods that may have privileged access to one another. Usually a class can be instantiated to produce an object that’s an instance of the class, with its own unique set of data.

The class keyword is used to declare a class, thereby defining a new object type.

classloader

An instance of the class java.lang.ClassLoader, which is responsible for loading Java binary classes into the Java VM. Classloaders help partition classes based on their source for both structural and security purposes and can also be chained in a parent-child hierarchy.

class method

See static method.

classpath

The sequence of path locations specifying directories and archive files containing compiled Java class files and resources, which are searched in order to find components of a Java application.

class variable

See static variable.

client

The consumer of a resource or the party that initiates a conversation in the case of a networked client/server application. See also server.

Collections API

Classes in the core java.util package for working with and sorting structured collections or maps of items. This API includes the Vector and Hashtable classes as well as newer items such as List, Map, and Queue.

compilation unit

The unit of source code for a Java class. A compilation unit normally contains a single class definition and in most current development environments is simply a file with a .java extension.

compiler

A program that translates source code into executable code.

component architecture

A methodology for building parts of an application. It is a way to build reusable objects that can be easily assembled to form applications.

composition

Combining existing objects to create another, more complex object. When you compose a new object, you create complex behavior by delegating tasks to the internal objects. Composition is different from inheritance, which defines a new object by changing or refining the behavior of an old object. See also inheritance.

constructor

A special method that is invoked automatically when a new instance of a class is created. Constructors are used to initialize the variables of the newly created object. The constructor method has the same name as the class and no explicit return value.

content handler

A class that is called to parse a particular type of data and convert it to an appropriate object.

datagram

A packet of data normally sent using a connectionless protocol such as UDP, which provides no guarantees about delivery or error checking and provides no control information.

data hiding

See encapsulation.

deep copy

A duplicate of an object along with all of the objects that it references, transitively. A deep copy duplicates the entire “graph” of objects, instead of just duplicating references. See also shallow copy.

Document Object Model (DOM)

An in-memory representation of a fully parsed XML document using objects with names like Element, Attribute, and Text. The Java XML DOM API binding is standardized by the World Wide Web Consortium (W3C).

double

A Java primitive data type; a double value is a 64-bit (double-precision) floating-point number in IEEE-754 (binary64) binary format.

Document Type Definition (DTD)

A document containing specialized language that expresses constraints on the structure of XML tags and tag attributes. DTDs are used to validate an XML document, and can constrain the order and nesting of tags as well as the allowed values of attributes.

Enterprise JavaBeans (EJBs)

A server-side business component architecture named for, but not significantly related to, the JavaBeans component architecture. EJBs represent business services and database components, and provide declarative security and transactions.

encapsulation

The object-oriented programming technique of limiting the exposure of variables and methods to simplify the API of a class or package. Using the private and protected keywords, a programmer can limit the exposure of internal (“black box”) parts of a class. Encapsulation reduces bugs and promotes reusability and modularity of classes. This technique is also known as data hiding.

enum

The Java keyword for declaring an enumerated type. An enum holds a list of constant object identifiers that can be used as a type-safe alternative to numeric constants that serve as identifiers or labels.

enumeration

See enum.

erasure

The implementation technique used by Java generics in which generic type information is removed (erased) and distilled to raw Java types at compilation. Erasure provides backward compatibility with nongeneric Java code, but introduces some difficulties in the language.

event

A user’s action, such as a mouse-click or keypress.

The Java object delivered to a registered event listener in response to a user action or other activity in the system.

exception

A signal that some unexpected condition has occurred in the program. In Java, exceptions are objects that are subclasses of Exception or Error (which themselves are subclasses of Throwable). Exceptions in Java are “raised” with the throw keyword and handled with the catch keyword. See also catch, throw, and throws.

exception chaining

The design pattern of catching an exception and throwing a new, higher-level, or more appropriate exception that contains the underlying exception as its cause. The “cause” exception can be retrieved if necessary.

extends

A keyword used in a class declaration to specify the superclass of the class being defined. The class being defined has access to all the public and protected variables and methods of the superclass (or, if the class being defined is in the same package, it has access to all nonprivate variables and methods). If a class definition omits the extends clause, its superclass is taken to be java.lang.Object.

final

A keyword modifier that may be applied to classes, methods, and variables. It has a similar, but not identical, meaning in each case. When final is applied to a class, it means that the class may never be subclassed. java.lang.System is an example of a final class. A final method cannot be overridden in a subclass. When final is applied to a variable, the variable is a constant — that is, it can’t be modified. (The contents of a mutable object can still be changed; the final variable always points to the same object.)

finalize

A reserved method name. The finalize() method is called by the Java VM when an object is no longer being used (i.e., when there are no further references to it) but before the object’s memory is actually reclaimed by the system. Largely disfavored in light of newer approaches such as the Closeable interface and try-with-resources.

finally

A keyword that introduces the finally block of a try/catch/finally construct. catch and finally blocks provide exception handling and routine cleanup for code in a try block. The finally block is optional and appears after the try block, and after zero or more catch blocks. The code in a finally block is executed once, regardless of how the code in the try block executes. In normal execution, control reaches the end of the try block and proceeds to the finally block, which generally performs any necessary cleanup.

float

A Java primitive data type; a float value is a 32-bit (single-precision) floating-point number represented in IEEE 754 format.

garbage collection

The process of reclaiming the memory of objects no longer in use. An object is no longer in use when there are no references to it from other objects in the system and no references in any local variables on any thread’s method call stack.

generics

The syntax and implementation of parameterized types in the Java language, added in Java 5.0. Generic types are Java classes that are parameterized by the user on one or more additional Java types to specialize the behavior of the class. Generics are sometimes referred to as templates in other languages.

generic class

A class that uses the Java generics syntax and is parameterized by one or more type variables, which represent class types to be substituted by the user of the class. Generic classes are particularly useful for container objects and collections that can be specialized to operate on a specific type of element.

generic method

A method that uses the Java generics syntax and has one or more arguments or return types that refer to type variables representing the actual type of data element the method will use. The Java compiler can often infer the types of the type variables from the usage context of the method.

graphics context

A drawable surface represented by the java.awt.Graphics class. A graphics context contains contextual information about the drawing area and provides methods for performing drawing operations in it.

graphical user interface (GUI)

A traditional, visual user interface consisting of a window containing graphical items such as buttons, text fields, pull-down menus, dialog boxes, and other standard interface components.

hashcode

A random-looking identifying number, based on the data content of an object, used as a kind of signature for the object. A hashcode is used to store an object in a hash table (or hash map). See also hash table.

hash table

An object that is like a dictionary or an associative array. A hash table stores and retrieves elements using key values called hashcodes. See also hashcode.

hostname

The human-readable name given to an individual computer attached to the internet.

Hypertext Transfer Protocol (HTTP)

The protocol used by web browsers or other clients to talk to web servers. The simplest form of the protocol uses the commands GET to request a file and POST to send data.

Integrated Development Environment (IDE)

A GUI tool such as IntelliJ IDEA or Eclipse that provides source editing, compiling, running, debugging, and deployment functionality for developing Java applications.

implements

A keyword used in class declarations to indicate that the class implements the named interface or interfaces. The implements clause is optional in class declarations; if it appears, it must follow the extends clause (if any). If an implements clause appears in the declaration of a non-abstract class, every method from each specified interface must be implemented by the class or by one of its superclasses.

import

The import statement makes Java classes available to the current class under an abbreviated name or disambiguates classes imported in bulk by other import statements. (Java classes are always available by their fully qualified name, assuming the appropriate class file can be found relative to the CLASSPATH environment variable and that the class file is readable. import doesn’t make the class available; it just saves typing and makes your code more legible.) Any number of import statements may appear in a Java program. They must appear, however, after the optional package statement at the top of the file, and before the first class or interface definition in the file.

inheritance

An important feature of object-oriented programming that involves defining a new object by changing or refining the behavior of an existing object. Through inheritance, an object implicitly contains all of the non-private variables and methods of its superclass. Java supports single inheritance of classes and multiple inheritance of interfaces.

inner class

A class definition that is nested within another class or a method. An inner class functions within the lexical scope of another class.

instance

An occurrence of something, usually an object. When a class is instantiated to produce an object, we say the object is an instance of the class.

instance method

A non-static method of a class. Such a method is passed an implicit this reference to the object that invoked it. See also static, static method.

instanceof

A Java operator that returns true if the object on its left side is an instance of the class (or implements the interface) specified on its right side. instanceof returns false if the object isn’t an instance of the specified class or doesn’t implement the specified interface. It also returns false if the specified object is null.

instance variable

A non-static variable of a class. Each instance of a class has an independent copy of all of the instance variables of the class. See also class variable, static.

int

A primitive Java data type that’s a 32-bit two’s-complement signed number.

interface

A keyword used to declare an interface.

A collection of abstract methods that collectively define a type in the Java language. Classes implementing the methods may declare that they implement the interface type, and instances of them may be treated as that type.

internationalization

The process of making an application accessible to people who speak a variety of languages. Sometimes abbreviated I18N.

interpreter

The module that decodes and executes Java bytecode. Most Java bytecode is not, strictly speaking, interpreted any longer but compiled to native code dynamically by the Java VM.

introspection

The process by which a JavaBean provides additional information about itself, supplementing information learned by reflection.

ISO 8859-1

An 8-bit character encoding standardized by the ISO. This encoding is also known as Latin-1 and contains characters from the Latin alphabet suitable for English and most languages of western Europe.

JavaBeans

A component architecture for Java. It is a way to build interoperable Java objects that can be manipulated easily in a visual application builder environment.

Java beans

Java classes that are built following the JavaBeans design patterns and conventions.

JavaScript

A language developed early in the history of the web by Netscape for creating dynamic web pages. From a programmer’s point of view, it’s unrelated to Java, although some of its syntax is similar.

Java API for XML Binding (JAXB)

A Java API that allows for generation of Java classes from XML DTD or Schema descriptions and the generation of XML from Java classes.

Java API for XML Parsers (JAXP)

The Java API that allows for pluggable implementations of XML and XSL engines. This API provides an implementation-neutral way to construct parsers and transforms.

JAX-RPC

The Java API for XML Remote Procedure Calls, used by web services.

Java Database Connectivity (JDBC)

The standard Java API for talking to an SQL (Structured Query Language) database.

JDOM

A native Java XML DOM created by Jason Hunter and Brett McLaughlin. JDOM is easier to use than the standard DOM API for Java. It uses the Java Collections API and standard Java conventions. Available at the JDOM Project site.

Java Web Services Developer Pack (JDSDP)

A bundle of standard extension APIs packaged as a group with an installer from Sun. The JWSDP includes JAXB, JAX-RPC, and other XML and web services-related packages.

lambda (or lambda expression)

A compact way to put the entire definition of a small, anonymous function right where you are using it in the code.

Latin-1

A nickname for ISO 8859-1.

layout manager

An object that controls the arrangement of components within the display area of a Swing or AWT container.

lightweight component

A pure Java GUI component that has no native peer in the AWT.

local variable

A variable that is declared inside a method. A local variable can be seen only by code within that method.

Logging API

The Java API for structured logging and reporting of messages from within application components. The Logging API supports logging levels indicating the importance of messages, as well as filtering and output capabilities.

long

A primitive Java data type that’s a 64-bit two’s-complement signed number.

message digest

A cryptographically computed number based on the content of a message, used to determine whether the message’s contents have been changed in any way. A change to a message’s contents will change its message digest. When implemented properly, it is almost impossible to create two similar messages with the same digest.

method

The object-oriented programming term for a function or procedure.

method overloading

Provides definitions of more than one method with the same name but with different argument lists. When an overloaded method is called, the compiler determines which one is intended by examining the supplied argument types.

method overriding

Defines a method that matches the name and argument types of a method defined in a superclass. When an overridden method is invoked, the interpreter uses dynamic method lookup to determine which method definition is applicable to the current object. Beginning in Java 5.0, overridden methods can have different return types, with restrictions.

MIME (or MIME type)

A media type classification system often associated with email attachments or web page content.

Model-View-Controller (MVC) framework

A UI design that originated in Smalltalk. In MVC, the data for a display item is called the model. A view displays a particular representation of the model, and a controller provides user interaction with both. Java incorporates many MVC concepts.

modifier

A keyword placed before a class, variable, or method that alters the item’s accessibility, behavior, or semantics. See also abstract, final, native method, private, protected, public, static, synchronized.

NaN (not-a-number)

This is a special value of the double and float data types that represents an undefined result of a mathematical operation, such as zero divided by zero.

native method

A method that is implemented in a native language on a host platform, rather than being implemented in Java. Native methods provide access to such resources as the network, the windowing system, and the host filesystem.

new

A unary operator that creates a new object or array (or raises an OutOfMemoryException if there is not enough memory available).

NIO

The Java “new” I/O package. A core package introduced in Java 1.4 to support asynchronous, interruptible, and scalable I/O operations. The NIO API supports nonthreadbound “select” style I/O handling.

null

null is a special value that indicates that a reference-type variable doesn’t refer to any object instance. Static and instance variables of classes default to the value null if not otherwise assigned.

object

The fundamental structural unit of an object-oriented programming language, encapsulating a set of data and behavior that operates on that data.

An instance of a class, having the structure of the class but its own copy of data elements. See also instance.

” (LerJav)

Sources:

Fair Use Sources:

Categories
Software Engineering

YouTube

The YouTube logo is made of a red round-rectangular box with a white "play" button inside and the word "YouTube" written in black.
Type of businessSubsidiary
Type of siteVideo hosting service
FoundedFebruary 14, 2005; 16 years ago
Headquarters901 Cherry Avenue
San Bruno, California, United States
Area servedWorldwide (excluding blocked countries)
Founder(s)Chad HurleySteve ChenJawed Karim
Key peopleSusan Wojcicki (CEO)
Chad Hurley (advisor)
IndustryInternetVideo hosting service
ProductsYouTube Premium
YouTube Music
YouTube TV
YouTube Kids
RevenueUS$15 billion (2019)[1]
ParentGoogle LLC (2006–present)
URLYouTube.com
(see list of localized domain names)
AdvertisingGoogle AdSense
RegistrationOptionalNot required to watch most videos; required for certain tasks such as uploading videos, viewing flagged (18+) videos, creating playlists, liking or disliking videos, and posting comments
Users2 billion (October 2020)[2]
LaunchedFebruary 14, 2005; 16 years ago
Current statusActive
Content licenseUploader holds copyright (standard license); Creative Commons can be selected.
Written inPython (core/API),[3] C (through CPython), C++Java (through Guice platform),[4][5] Go,[6] JavaScript (UI)

YouTube is an American online video-sharing platform headquartered in San Bruno, California. The service, created in February 2005 by three former PayPal employees—Chad HurleySteve Chen, and Jawed Karim—was bought by Google in November 2006 for US$1.65 billion and now operates as one of the company’s subsidiaries. YouTube is the second most-visited website after Google Search, according to Alexa Internet rankings.[7]

YouTube allows users to upload, view, rate, share, add to playlists, report, comment on videos, and subscribe to other users. Available content includes video clipsTV show clips, music videosshort and documentary films, audio recordings, movie trailerslive streamsvideo blogging, short original videos, and educational videos. Most content is generated and uploaded by individuals, but media corporations including CBS, the BBCVevo, and Hulu offer some of their material via YouTube as part of the YouTube partnership program. Unregistered users can watch, but not upload, videos on the site, while registered users can upload an unlimited number of videos and add comments. Age-restricted videos are available only to registered users affirming themselves to be at least 18 years old.

As of May 2019, there were more than 500 hours of content uploaded to YouTube each minute and one billion hours of content being watched on YouTube every day.[8] YouTube and selected creators earn advertising revenue from Google AdSense, a program that targets ads according to site content and audience. The vast majority of videos are free to view, but there are exceptions, including subscription-based premium channels, film rentals, as well as YouTube Music and YouTube Premium, subscription services respectively offering premium and ad-free music streaming, and ad-free access to all content, including exclusive content commissioned from notable personalities. Based on reported quarterly advertising revenue, YouTube is estimated to have US$15 billion in annual revenues.

Further reading

External links

Categories

” (WP)

Sources:

Fair Use Sources:

Categories
Software Engineering

Twitter – Tweeting – Tweeted

“Tweeting” and “Tweeted” redirect here. 

Twitter bird logo 2012.svg
Type of businessPublic
Type of siteNewssocial networking service
Available inMultilingual
Traded asNYSETWTRS&P 500 Component
FoundedMarch 21, 2006; 14 years ago
HeadquartersSan Francisco, California United States
Area servedWorldwide
Founder(s)Jack DorseyNoah GlassBiz StoneEvan Williams
Key peopleOmid Kordestani(Executive Chairman)[1]Ned Segal (CFO)Jack Dorsey (CEO)Parag Agrawal (CTO)
IndustryInternet3.72
RevenueDecrease US$3.72 billion (2020)
Operating incomeDecrease US27 million (2020)
Net incomeDecrease US$-1.13 billion (2020)
Total assetsIncrease US$13.37 billion (2020)
Total equityDecrease US$7.97 billion (2020)
Employees4,600 (September 2019)[2]
SubsidiariesVinePeriscopeMoPub
URLtwitter.com 
RegistrationRequired
Users330 million monthly active users(Q1 2019)
LaunchedJuly 15, 2006; 14 years ago
Current statusActive
Native client(s) oniOSAndroidWindows PhoneMicrosoft WindowsMacOSWeb
Written inJavaRubyScalaJavaScript
[3][4][5][6][7][8][9][10][11][12]

Twitter is an American microblogging and social networking service on which users post and interact with messages known as “tweets”. Registered users can post, like and retweet tweets, but unregistered users can only read them. Users access Twitter through its website interface or its mobile-device application software (“app”), though the service could also be accessed via SMS before April 2020.[13] Twitter, Inc. is based in San FranciscoCalifornia, and has more than 25 offices around the world.[14] Tweets were originally restricted to 140 characters, but was doubled to 280 for non-CJK languages in November 2017.[15] Audio and video tweets remain limited to 140 seconds for most accounts.

Twitter was created by Jack DorseyNoah GlassBiz Stone, and Evan Williams in March 2006 and launched in July of that year. By 2012, more than 100 million users posted 340 million tweets a day,[16] and the service handled an average of 1.6 billion search queries per day.[17][18][19] In 2013, it was one of the ten most-visited websites and has been described as “the SMS of the Internet”.[20] As of Q1 2019, Twitter had more than 330 million monthly active users.[10] Twitter is a some-to-many microblogging service, given that the vast majority of tweets are written by a small minority of users.[21][22]

Categories

” (WP)

Sources:

Fair Use Sources:

Categories
History Software Engineering

! Template Authors-Teachers

See also: List of pioneers in computer science and Timeline of the History of Computers

” (WP)

” (WP)

Sources:

Fair Use Sources:

Categories
JavaScript React Software Engineering

React.js Bibliography

See also: Awesome React, React Frameworks built on the React Library, React library, JavaScript, JavaScript Library and Framework Bibliography

Books on React.js:

Sources:

Fair Use Sources:

Categories
Apple macOS Operating Systems Software Engineering

macOS – OSX – OS X

This article is about the current Apple operating system for Mac computers. For pre-2001 versions, see Classic Mac OS.

MacOS wordmark (2017).svg
DeveloperApple Inc.
Written inCC++[1]Objective-CSwift[2]assembly language
OS familyUnixMacintosh
Working stateCurrent
Source modelClosed source (with open source components)
Initial releaseMarch 24, 2001; 19 years ago
Latest release11.2.3[3] (20D91)[4] (March 8, 2021; 1 day ago) [±]
Latest preview11.3 beta 3[5] (20E5196f)[6] (March 2, 2021; 7 days ago) [±]
Marketing targetPersonal computing
Available in39 languages[7]
List of languages[as of macOS Catalina]: Arabic, Catalan, Croatian, Chinese (Hong Kong), Chinese (Simplified), Chinese (Traditional), Czech, Danish, Dutch, English (Australia), English (United Kingdom), English (United States), Finnish, French (Canada), French (France), German, Greek, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Norwegian, Polish, Portuguese (Brazil), Portuguese (Portugal), Romanian, Russian, Slovak, Spanish (Latin America), Spanish (Spain), Swedish, Thai, Turkish, Ukrainian, Vietnamese
Update methodSystem Preferences (10.14–)Mac App Store (10.810.13.6)Software Update (10.010.7.5)
PlatformsARM64 (11.0–)x86-64 (10.4.7–)IA-32 (10.4.410.6.8)PowerPC (10.010.5.8)
Kernel typeHybrid (XNU)
Default user interfaceAqua (Graphical)
LicenseCommercial softwareproprietary software
Preceded byClassic Mac OSNeXTSTEP
Official websitewww.apple.com/macos
Support status
Supported

macOS (/ˌmækoʊˈɛs/;[8] previously Mac OS X and later OS X) is a series of proprietary graphical operating systems developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple’s Mac computers. Within the market of desktop, laptop and home computers, and by web usage, it is the second most widely used desktop OS, after Microsoft Windows.[9][10]” (WP)

“macOS is the direct successor to the classic Mac OS, the line of Macintosh operating systems with nine releases from 1984 to 1999. macOS adopted the Unix kernel and inherited technologies developed between 1985 and 1997 at NeXT, the company that Apple co-founder Steve Jobs created after leaving Apple in 1985. Releases from Mac OS X 10.5 Leopard[11] and thereafter are UNIX 03 certified.[12] Apple’s mobile operating system, iOS, has been considered a variant of macOS.[13]” (WP)

“The first desktop version, Mac OS X 10.0, was released in March 2001, with its first update, 10.1, arriving later that year. The “X” in Mac OS X and OS X is the Roman numeral for the number 10 and is pronounced as such. The X was a prominent part of the operating system’s brand identity and marketing in its early years, but gradually receded in prominence since the release of Snow Leopard in 2009. Apple began naming its releases after big cats, which lasted until OS X 10.8 Mountain Lion. Since OS X 10.9 Mavericks, releases have been named after locations in California.[14] Apple shortened the name to “OS X” in 2012 and then changed it to “macOS” in 2016, adopting the nomenclature that they were using for their other operating systems, iOSwatchOS, and tvOS. With Big Sur, Apple advanced the macOS major version number for the first time, changing it to 11 for Big Sur from the 10 used for all previous releases.” (WP)

“macOS has supported three major processor architectures. It first supported PowerPC-based Macs in 1999. Starting in 2006, with the Mac transition to Intel processors, it ran on Macs using Intel x86 processors. Most recently, starting in 2020, with the Mac transition to Apple Silicon, it runs on Macs using 64-bit ARM-based Apple Silicon processors.” (WP)

Sources:

Fair Use Sources:

Categories
Cloud DevOps Software Engineering

GitHub

Font Awesome 5 brands github.svg
GitHub logo 2013.svg
Type of businessSubsidiary
Type of siteCollaborative version control
Available inEnglish
FoundedFebruary 8, 2008; 13 years ago (as Logical Awesome LLC)
HeadquartersSan Francisco, California, United States
Area servedWorldwide
Founder(s)Tom Preston-WernerChris WanstrathP. J. HyettScott Chacon
CEONat Friedman
Key peopleMike Taylor (CFO)
IndustryCollaborative version control (GitHub)
Blog host (GitHub Pages)
Package repository (NPM)
Employees1677[1]
ParentMicrosoft
URLgithub.com 
RegistrationOptional (required for creating and joining repositories)
Users56 million (Sep 2020)
LaunchedApril 10, 2008; 12 years ago
Current statusActive
Written inRuby
ECMAScript
Go
C [2]

GitHub, Inc. is a provider of Internet hosting for software development and version control using Git. It offers the distributed version control and source code management (SCM) functionality of Git, plus its own features. It provides access control and several collaboration features such as bug trackingfeature requests, task managementcontinuous integration and wikis for every project.[3] Headquartered in California, it has been a subsidiary of Microsoft since 2018.[4]

GitHub offers its basic services free of charge. Its more advanced professional and enterprise services are commercial.[5] Free GitHub accounts are commonly used to host open-source projects.[6] As of January 2019, GitHub offers unlimited private repositories to all plans, including free accounts, but allowed only up to three collaborators per repository for free.[7] Starting from April 15, 2020, the free plan allows unlimited collaborators, but restricts private repositories to 2,000 minutes of GitHub Actions[8] per month.[9] As of January 2020, GitHub reports having over 40 million users[10] and more than 190 million repositories[11] (including at least 28 million public repositories),[12] making it the largest host of source code in the world.[13]

History

GitHub at AWS Summit

The GitHub service was developed by Chris WanstrathP. J. HyettTom Preston-Werner and Scott Chacon using Ruby on Rails, and started in February 2008. The company, GitHub, Inc., has existed since 2007 and is located in San Francisco.[14]The shading of the map illustrates the number of users as a proportion of each country’s Internet population. The circular charts surrounding the two hemispheres depict the total number of GitHub users (left) and commits (right) per country.

On February 24, 2009, GitHub announced that within the first year of being online, GitHub had accumulated over 46,000 public repositories, 17,000 of which were formed in the previous month. At that time, about 6,200 repositories had been forked at least once and 4,600 had been merged.

That same year, the site was harnessed by over 100,000 users, according to Github, and had grown to host 90,000 unique public repositories, 12,000 having been forked at least once, for a total of 135,000 repositories.[15]

In 2010, GitHub was hosting 1 million repositories.[16] A year later, this number doubled.[17] ReadWriteWeb reported that GitHub had surpassed SourceForge and Google Code in total number of commits for the period of January to May 2011.[18] On January 16, 2013, GitHub passed the 3 million users mark and was then hosting more than 5 million repositories.[19] By the end of the year, the number of repositories were twice as much, reaching 10 million repositories.[20]

In 2012, GitHub raised $100 million in funding from Andreessen Horowitz with $750 million valuation.[21] Peter Levine, general partner at Andreessen Horowitz, stated that GitHub had been growing revenue at 300% annually since 2008 “profitably nearly the entire way”.[22] On July 29, 2015, GitHub stated it had raised $250 million in funding in a round led by Sequoia Capital. Other investors of that round included Andreessen Horowitz, Thrive Capital, and IVP (Institutional Venture Partners).[23] The round valued the company at approximately $2 billion.[24]

In 2015, GitHub opened an office in Japan that is its first office outside of the U.S.[25] In 2016, GitHub was ranked No. 14 on the Forbes Cloud 100 list.[26] It has not been featured on the 2018, 2019 and 2020 lists.[27]

On February 28, 2018, GitHub fell victim to the third largest distributed denial-of-service (DDoS) attack in history, with incoming traffic reaching a peak of about 1.35 terabits per second.[28]

On June 19, 2018, GitHub expanded its GitHub Education by offering free education bundles to all schools.[29][30]

Acquisition by Microsoft

From 2012 Microsoft became a significant user of GitHub, using it to host open-source projects and development tools such as .NET CoreChakra CoreMSBuildPowerShellPowerToysVisual Studio CodeWindows CalculatorWindows Terminal and the bulk of its product documentation (now to be found on Microsoft Docs).[31][32]

On June 4, 2018, Microsoft announced its intent to acquire GitHub for US$7.5 billion. The deal closed on October 26, 2018.[33] GitHub continued to operate independently as a community, platform and business.[34] Under Microsoft, the service was led by Xamarin‘s Nat Friedman, reporting to Scott Guthrie, executive vice president of Microsoft Cloud and AI. GitHub’s CEO, Chris Wanstrath, was retained as a “technical fellow”, also reporting to Guthrie.

There have been concerns from developers Kyle Simpson, JavaScript trainer and author, and Rafael Laguna, CEO at Open-Xchange over Microsoft’s purchase, citing uneasiness over Microsoft’s handling of previous acquisitions, such as Nokia’s mobile business or Skype.[35][36]

This acquisition was in line with Microsoft’s business strategy under CEO Satya Nadella, which has seen a larger focus on the cloud computing services, alongside development of and contributions to open-source software.[37][4][32] Harvard Business Review argued that Microsoft was intending to acquire GitHub to get access to its user base, so it can be used as a loss leader to encourage use of its other development products and services.[38]

Concerns over the sale bolstered interest in competitors: Bitbucket (owned by Atlassian), GitLab (a commercial open source product that also runs a hosted service version) and SourceForge (owned by BIZX, LLC) reported that they had seen spikes in new users intending to migrate projects from GitHub to their respective services.[39][40][41][42]

In September 2019, GitHub acquired Semmle, a code analysis tool.[43] In February 2020, GitHub launched in India under the name GitHub India Private Limited.[44] In March 2020, GitHub announced that they were acquiring npm, a JavaScript packaging vendor, for an undisclosed sum of money.[45] The deal was closed on 15 April 2020.[46]

In early July 2020, the GitHub Archive Program was established, to archive its open source code in perpetuity.[47]

Services

GitHub.com

Development of the GitHub.com platform began on October 19, 2007.[60][61][62] The site was launched in April 2008 by Tom Preston-Werner, Chris Wanstrath, P. J. Hyett and Scott Chacon after it had been made available for a few months prior as a beta release.[63]

Projects on GitHub.com can be accessed and managed using the standard Git command-line interface; all standard Git commands work with it. GitHub.com also allows users to browse public repositories on the site. Multiple desktop clients and Git plugins are also available. The site provides social networking-like functions such as feeds, followers, wikis (using wiki software called Gollum) and a social network graph to display how developers work on their versions (“forks“) of a repository and what fork (and branch within that fork) is newest.

Anyone can browse and download public repositories but only registered users can contribute content to repositories. With a registered user account, users are able to have discussions, manage repositories, submit contributions to others’ repositories, and review changes to code. GitHub.com began offering unlimited private repositories at no cost in January 2019 (limited to three contributors per project). Previously, only public repositories were free.[64][65][66] On April 14, 2020, GitHub made “all of the core GitHub features” free for everyone, including “private repositories with unlimited collaborators”.[67]

The fundamental software that underpins GitHub is Git itself, written by Linus Torvalds, creator of Linux. The additional software that provides the GitHub user interface was written using Ruby on Rails and Erlang by GitHub, Inc. developers Wanstrath,[68] Hyett, and Preston-Werner.

Scope

The main purpose of GitHub.com is to facilitate the version control and issue tracking aspects of software development. Labels, milestones, responsibility assignment, and a search engine are available for issue tracking. For version control, Git (and by extension GitHub.com) allows pull requests to propose changes to the source code. Users with the ability to review the proposed changes can see a diff of the requested changes and approve them. In Git terminology, this action is called “committing” and one instance of it is a “commit”. A history of all commits are kept and can be viewed at a later time.

In addition, GitHub supports the following formats and features:

  • Documentation, including automatically rendered README files in a variety of Markdown-like file formats (see README § On GitHub)
  • Wikis
  • GitHub Actions, which allows building continuous integration and continuous deployment pipelines for testing, releasing and deploying software without the use of third-party websites/platforms
  • Graphs: pulse, contributors, commits, code frequency, punch card, network, members
  • Integrations Directory[69]
  • Email notifications
  • Discussions
  • Option to subscribe someone to notifications by @ mentioning them.[70]
  • Emojis[71]
  • Nested task-lists within files
  • Visualization of geospatial data
  • 3D render files that can be previewed using a new integrated STL file viewer that displays the files on a “3D canvas”.[72] The viewer is powered by WebGL and Three.js.
  • Photoshop’s native PSD format can be previewed and compared to previous versions of the same file.
  • PDF document viewer
  • Security Alerts of known Common Vulnerabilities and Exposures in different packages

GitHub’s Terms of Service do not require public software projects hosted on GitHub to meet the Open Source Definition. The terms of service state, “By setting your repositories to be viewed publicly, you agree to allow others to view and fork your repositories.”[73]

GitHub Enterprise

GitHub Enterprise is a self-managed version of GitHub.com with similar functionality. It can be run on an organization’s own hardware or on a cloud provider, and it has been available since November 2011.[74] In November 2020, source code for GitHub Enterprise Server was leaked online in apparent protest against DMCA takedown of YouTube-dl. According to GitHub, the source code came from GitHub accidentally sharing the code with Enterprise customers themselves, not from an attack on GitHub servers.[75][76]

GitHub Pages

GitHub Pages is a static web hosting service offered by GitHub since 2008 to GitHub users for hosting user blogs, project documentation,[77][78] or even whole books created as a page.[79]

All GitHub Pages content is stored in a Git repository, either as files served to visitors verbatim or in Markdown format. GitHub is seamlessly integrated with Jekyll static web site and blog generator and GitHub continuous integration pipelines. Each time the content source is updated, Jekyll regenerates the website and automatically serves it via GitHub Pages infrastructure.[80]

As with the rest of GitHub, it includes both free and paid tiers of service, instead of being supported by web advertising. Web sites generated through this service are hosted either as subdomains of the github.io domain, or as custom domains bought through a third-party domain name registrar.[81] When custom domain is set on a GitHub Pages repo a Let’s Encrypt certificate for it is generated automatically. Once the certificate has been generated Enforce HTTPS can be set for the repository’s website to transparently redirect all HTTP requests to HTTPS.[82][83]

Gist

GitHub also operates other services: a pastebin-style site called Gist[63] that is for hosting code snippets (GitHub proper is for hosting larger projects).

Tom Preston-Werner presented the then-new Gist feature at a punk rock Ruby conference in 2008.[84] Gist builds on the traditional simple concept of a pastebin by adding version control for code snippets, easy forking, and TLS encryption for private pastes. Because each “gist” has its own Git repository, multiple code snippets can be contained in a single paste and they can be pushed and pulled using Git. Further, forked code can be pushed back to the original author in the form of a patch, so gists (pastes) can become more like mini-projects.[citation needed]

Before February 18, 2018, unregistered users were able to upload text to the site. Since then, uploading gists has been deactivated for unregistered users with the aim to mitigate spamming.[85]

Education program

GitHub launched a new program called the GitHub Student Developer Pack to give students free access to popular development tools and services. GitHub partnered with BitnamiCrowdflowerDigitalOceanDNSimpleHackHandsNamecheap, Orchestrate, Screenhero, SendGridStripeTravis CI and Unreal Engine to launch the program.[86]

In 2016 GitHub announced the launch of the GitHub Campus Experts program[87] to train and encourage students to grow technology communities at their universities. The Campus Experts program is open to university students of 18 years and older across the world.[88] GitHub Campus Experts are one of the primary ways that GitHub funds student oriented events and communities, Campus Experts are given access to training, funding, and additional resources to run events and grow their communities. To become a Campus Expert applicants must complete an online training course consisting of multiple modules designed to grow community leadership skills.

GitHub Marketplace service

GitHub also provides some software as a service integrations for adding extra features to projects. Those services include:

  • Waffle.io: Project management for software teams. Automatically see pull requests, automated builds, reviews, and deployments across all of your repositories in GitHub.
  • Rollbar: Integrate with GitHub to provide real time debugging tools and full-stack exception reporting. It is compatible with all well used code languages, such as JavaScriptPython.NETRubyPHPNode.jsAndroidiOSGoJava, and C#.
  • Codebeat: For automated code analysis specialized in web and mobile developers. The supported languages for this software are: ElixirGoJavaSwiftJavaScriptPythonRubyKotlinObjective-C, and TypeScript.
  • Travis CI: To provide confidence for your apps while doing test and ship. Also gives full control over the build environment, to adapt it to the code. Supported languages: GoJavaJavaScriptObjective-CPythonPHPRuby, and Swift.
  • GitLocalize: Developed for teams that are translating their content from one point to another. GitLocalize automatically syncs with your repository so you can keep your workflow on GitHub. It also keeps you updated on what needs to be translated.

GitHub Sponsors

GitHub Sponsors allows users to make monthly money donations to projects hosted on GitHub.[89] The public beta was announced on May 23, 2019 and currently the project accepts wait list registrations. The Verge said that GitHub Sponsors “works exactly like Patreon” because “developers can offer various funding tiers that come with different perks, and they’ll receive recurring payments from supporters who want to access them and encourage their work” except with “zero fees to use the program”. Furthermore, GitHub offer incentives for early adopters during the first year: it pledges to cover payment processing costs, and match sponsorship payments up to $5,000 per developer. Furthermore, users still can use other similar services like Patreon and Open Collective and link to their own websites.[90][91]

GitHub Archive Program

In July 2020, GitHub stored a February archive of the site[47] in an abandoned mountain mine in Svalbard, Norway, part of the Arctic World Archive and not far from the Svalbard Global Seed Vault. The archive contained the code of all active public repositories, as well as that of dormant, but significant public repositories. The 21TB of data was stored on piqlFilm archival film reels as QR codes, and is expected to last 500–1,000 years.[92][93][94][95]

The GitHub Archive Program is also working with partners on Project Silica, in an attempt to store all public repositories for 10,000 years. It aims to write archives into the molecular structure of quartz glass platters, using a high-precision laser that pulses a quadrillion (1,000,000,000,000,000) times per second.[95]

Developed projects

  • Atom, a free and open-source text and source code editor
  • Electron, an open-source framework to use JavaScript-based websites as desktop applications.

Prominent users

Some prominent open source organizations and projects use GitHub as a primary place for collaboration, including:

See also

Categories

” (WP)

Sources:

Fair Use Sources:

Categories
Software Engineering

Outline of computer programming

“The following outline is provided as an overview of and topical guide to computer programming:” (WP)

Computer programming – process that leads from an original formulation of a computing problem to executable computer programs. Programming involves activities such as analysis, developing understanding, generating algorithmsverification of requirements of algorithms including their correctness and resources consumption, and implementation (commonly referred to as coding[1][2]) of algorithms in a target programming languageSource code is written in one or more programming languages. The purpose of programming is to find a sequence of instructions that will automate performing a specific task or solving a given problem.” (WP)

History

Platforms

Further information: Computing platform

Paradigms

Further information: Programming paradigm

Writing programs

Methodology

Further information: Programming style

Algorithms

Further information: Algorithm

Programming languages

Programming language – formal constructed language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs to control the behavior of a machine or to express algorithms.” (WP)

Types of programming languages

Further information: Programming paradigm

Popular languages

The top 20 most popular programming languages as of February 2021:[3]

  1. C
  2. Java
  3. Python
  4. C++
  5. C#
  6. Visual Basic .NET
  7. JavaScript
  8. PHP
  9. SQL
  10. Assembly language
  11. R
  12. Groovy
  13. Go
  14. Ruby
  15. Swift
  16. MATLAB
  17. Delphi/Object Pascal
  18. Classic Visual Basic
  19. Perl
  20. Objective-C

Anatomy of a programming language

Comparisons of programming languages

Programming language comparisons

Comparisons of individual languages

Compilation

Further information: Compiler

Software

Further information: Computer software

Components

Software development

Software engineering

Software engineering –

See also

Sources:

Fair Use Sources:

Categories
Software Engineering

Anatomy of a programming language

(WP)

Sources:

Fair Use Sources:

Categories
Cloud Software Engineering

Software

Software is a collection of instructions and data that tell the computer how to work. This is in contrast to physical hardware, from which the system is built and actually performs the work. In computer science and software engineering, computer software is all information processed by computer systems, including programs and data. Computer software includes computer programslibraries and related non-executable data, such as online documentation or digital media. Computer hardware and software require each other and neither can be realistically used on its own.” (WP)

“At the lowest programming level, executable code consists of machine language instructions supported by an individual processor—typically a central processing unit (CPU) or a graphics processing unit (GPU). A machine language consists of groups of binary values signifying processor instructions that change the state of the computer from its preceding state. For example, an instruction may change the value stored in a particular storage location in the computer—an effect that is not directly observable to the user. An instruction may also invoke one of many input or output operations, for example displaying some text on a computer screen; causing state changes which should be visible to the user. The processor executes the instructions in the order they are provided, unless it is instructed to “jump” to a different instruction, or is interrupted by the operating system. As of 2015, most personal computerssmartphone devices and servers have processors with multiple execution units or multiple processors performing computation together, and computing has become a much more concurrent activity than in the past.” (WP)

“The majority of software is written in high-level programming languages. They are easier and more efficient for programmers because they are closer to natural languages than machine languages.[1] High-level languages are translated into machine language using a compiler or an interpreter or a combination of the two. Software may also be written in a low-level assembly language, which has strong correspondence to the computer’s machine language instructions and is translated into machine language using an assembler.” (WP)

Sources:

Fair Use Sources:

Categories
Cloud Software Engineering

Copyright

Copyright is a type of intellectual property that gives its owner the exclusive right to make copies of a creative work, usually for a limited time.[1][2][3][4][5] The creative work may be in a literary, artistic, educational, or musical form. Copyright is intended to protect the original expression of an idea in the form of a creative work, but not the idea itself.[6][7][8] A copyright is subject to limitations based on public interest considerations, such as the fair use doctrine in the United States.” (WP)

“Some jurisdictions require “fixing” copyrighted works in a tangible form. It is often shared among multiple authors, each of whom holds a set of rights to use or license the work, and who are commonly referred to as rights holders.[9][10][11][12][better source needed] These rights frequently include reproduction, control over derivative works, distribution, public performance, and moral rights such as attribution.[13]” (WP)

“Copyrights can be granted by public law and are in that case considered “territorial rights”. This means that copyrights granted by the law of a certain state, do not extend beyond the territory of that specific jurisdiction. Copyrights of this type vary by country; many countries, and sometimes a large group of countries, have made agreements with other countries on procedures applicable when works “cross” national borders or national rights are inconsistent.[14]” (WP)

“Typically, the public law duration of a copyright expires 50 to 100 years after the creator dies, depending on the jurisdiction. Some countries require certain copyright formalities[5] to establishing copyright, others recognize copyright in any completed work, without a formal registration. In general, many believe that the long copyright duration guarantees the better protection of works.” (WP)

Sources:

Fair Use Sources:

Categories
C Language C# .NET C++ Cloud Data Science - Big Data DevOps Django Web Framework Flask Web Framework Go Programming Language Java JavaScript Kotlin PowerShell Python Ruby Software Engineering Spring Framework Swift TypeScript

Integrated Development Environment (IDE)

“An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editorbuild automation tools and a debugger. Some IDEs, such as Visual Studio, NetBeans and Eclipse, contain the necessary compilerinterpreter, or both; others, such as SharpDevelop and Lazarus, do not.” (WP)

“The boundary between an IDE and other parts of the broader software development environment is not well-defined; sometimes a version control system or various tools to simplify the construction of a graphical user interface (GUI) are integrated. Many modern IDEs also have a class browser, an object browser, and a class hierarchy diagram for use in object-oriented software development.” (WP)

Categories
C# .NET Software Engineering

Computer Programming

Computer programming is the process of designing and building an executable computer program to accomplish a specific computing result or to perform a specific task. Programming involves tasks such as: analysis, generating algorithmsprofiling algorithms’ accuracy and resource consumption, and the implementation of algorithms in a chosen programming language (commonly referred to as coding).[1][2] The source code of a program is written in one or more languages that are intelligible to programmers, rather than machine code, which is directly executed by the central processing unit. The purpose of programming is to find a sequence of instructions that will automate the performance of a task (which can be as complex as an operating system) on a computer, often for solving a given problem. Proficient programming thus often requires expertise in several different subjects, including knowledge of the application domain, specialized algorithms, and formal logic.” (WP)

“Tasks accompanying and related to programming include: testingdebuggingsource code maintenance, implementation of build systems, and management of derived artifacts, such as the machine code of computer programs. These might be considered part of the programming process, but often the term software development is used for this larger process with the term programmingimplementation, or coding reserved for the actual writing of code. Software engineering combines engineering techniques with software development practices. Reverse engineering is a related process used by designers, analysts and programmers to understand and re-create/re-implement.[3]:3” (WP)

History

Ada Lovelace, whose notes added to the end of Luigi Menabrea‘s paper included the first algorithm designed for processing by an Analytical Engine. She is often recognized as history’s first computer programmer.” (WP)

See also: Computer program § HistoryProgrammer § History, and History of programming languages

Programmable devices have existed for centuries. As early as the 9th century, a programmable music sequencer was invented by the Persian Banu Musa brothers, who described an automated mechanical flute player in the Book of Ingenious Devices.[4][5] In 1206, the Arab engineer Al-Jazari invented a programmable drum machine where a musical mechanical automaton could be made to play different rhythms and drum patterns, via pegs and cams.[6][7] In 1801, the Jacquard loom could produce entirely different weaves by changing the “program” – a series of pasteboard cards with holes punched in them.” (WP)

Code-breaking algorithms have also existed for centuries. In the 9th century, the Arab mathematician Al-Kindi described a cryptographic algorithm for deciphering encrypted code, in A Manuscript on Deciphering Cryptographic Messages. He gave the first description of cryptanalysis by frequency analysis, the earliest code-breaking algorithm.[8]

The first computer program is generally dated to 1843, when mathematician Ada Lovelace published an algorithm to calculate a sequence of Bernoulli numbers, intended to be carried out by Charles Babbage‘s Analytical Engine.[9]Data and instructions were once stored on external punched cards, which were kept in order and arranged in program decks.

In the 1880s Herman Hollerith invented the concept of storing data in machine-readable form.[10] Later a control panel (plugboard) added to his 1906 Type I Tabulator allowed it to be programmed for different jobs, and by the late 1940s, unit record equipment such as the IBM 602 and IBM 604, were programmed by control panels in a similar way, as were the first electronic computers. However, with the concept of the stored-program computer introduced in 1949, both programs and data were stored and manipulated in the same way in computer memory.[citation needed]

Machine language

Machine code was the language of early programs, written in the instruction set of the particular machine, often in binary notation. Assembly languages were soon developed that let the programmer specify instruction in a text format, (e.g., ADD X, TOTAL), with abbreviations for each operation code and meaningful names for specifying addresses. However, because an assembly language is little more than a different notation for a machine language, any two machines with different instruction sets also have different assembly languages.Wired control panel for an IBM 402 Accounting Machine.

Compiler languages

High-level languages made the process of developing a program simpler and more understandable, and less bound to the underlying hardware. FORTRAN, the first widely used high-level language to have a functional implementation, came out in 1957[11] and many other languages were soon developed—in particular, COBOL aimed at commercial data processing, and Lisp for computer research.

These compiled languages allow the programmer to write programs in terms that are syntactically richer, and more capable of abstracting the code, making it targetable to varying machine instruction sets via compilation declarations and heuristics. The first compiler for a programming language was developed by Grace Hopper.[12] When Hopper went to work on UNIVAC in 1949, she brought the idea of using compilers with her.[13][14] Compilers harness the power of computers to make programming easier[11] by allowing programmers to specify calculations by entering a formula using infix notation (e.g., Y = X*2 + 5*X + 9) for example. FORTRAN, the first widely used high-level language to have a functional implementation which permitted the abstraction of reusable blocks of code, came out in 1957[11] and many other languages were soon developed—in particular, COBOL aimed at commercial data processing, and Lisp for computer research. In 1951 Frances E. Holberton developed the first sort-merge generator, which ran on the UNIVAC I.[15] Another woman working at UNIVAC, Adele Mildred Koss, developed a program that was a precursor to report generators.[15] The idea for the creation of COBOL started in 1959 when Mary K. Hawes, who worked for the Burroughs Corporation, set up a meeting to discuss creating a common business language.[16] She invited six people, including Grace Hopper.[16] Hopper was involved in developing COBOL as a business language and creating “self-documenting” programming.[17][18] Hopper’s contribution to COBOL was based on her programming language, called FLOW-MATIC.[14] In 1961, Jean E. Sammet developed FORMAC and also published Programming Languages: History and Fundamentals, which went on to be a standard work on programming languages.[16][19]

Source code entry

Programs were mostly still entered using punched cards or paper tape. See Computer programming in the punch card era. By the late 1960s, data storage devices and computer terminals became inexpensive enough that programs could be created by typing directly into the computers. Frances Holberton created a code to allow keyboard inputs while she worked at UNIVAC.[20]

Text editors were developed that allowed changes and corrections to be made much more easily than with punched cards. Sister Mary Kenneth Keller worked on developing the programming language BASIC while she was a graduate student at Dartmouth in the 1960s.[21] One of the first object-oriented programming languages, Smalltalk, was developed by seven programmers, including Adele Goldberg, in the 1970s.[22]

Modern programming

Quality requirements

Whatever the approach to development may be, the final program must satisfy some fundamental properties. The following properties are among the most important:[23] [24]

  • Reliability: how often the results of a program are correct. This depends on conceptual correctness of algorithms, and minimization of programming mistakes, such as mistakes in resource management (e.g., buffer overflows and race conditions) and logic errors (such as division by zero or off-by-one errors).
  • Robustness: how well a program anticipates problems due to errors (not bugs). This includes situations such as incorrect, inappropriate or corrupt data, unavailability of needed resources such as memory, operating system services, and network connections, user error, and unexpected power outages.
  • Usability: the ergonomics of a program: the ease with which a person can use the program for its intended purpose or in some cases even unanticipated purposes. Such issues can make or break its success even regardless of other issues. This involves a wide range of textual, graphical, and sometimes hardware elements that improve the clarity, intuitiveness, cohesiveness and completeness of a program’s user interface.
  • Portability: the range of computer hardware and operating system platforms on which the source code of a program can be compiled/interpreted and run. This depends on differences in the programming facilities provided by the different platforms, including hardware and operating system resources, expected behavior of the hardware and operating system, and availability of platform-specific compilers (and sometimes libraries) for the language of the source code.
  • Maintainability: the ease with which a program can be modified by its present or future developers in order to make improvements or customizations, fix bugs and security holes, or adapt it to new environments. Good practices[25] during initial development make the difference in this regard. This quality may not be directly apparent to the end user but it can significantly affect the fate of a program over the long term.
  • Efficiency/performance: Measure of system resources a program consumes (processor time, memory space, slow devices such as disks, network bandwidth and to some extent even user interaction): the less, the better. This also includes careful management of resources, for example cleaning up temporary files and eliminating memory leaks. This is often discussed under the shadow of a chosen programming language. Although the language certainly affects performance, even slower languages, such as Python, can execute programs instantly from a human perspective. Speed, resource usage, and performance are important for programs that bottleneck the system, but efficient use of programmer time is also important and is related to cost: more hardware may be cheaper.

Readability of source code

In computer programming, readability refers to the ease with which a human reader can comprehend the purpose, control flow, and operation of source code. It affects the aspects of quality above, including portability, usability and most importantly maintainability.

Readability is important because programmers spend the majority of their time reading, trying to understand and modifying existing source code, rather than writing new source code. Unreadable code often leads to bugs, inefficiencies, and duplicated code. A study[26] found that a few simple readability transformations made code shorter and drastically reduced the time to understand it.

Following a consistent programming style often helps readability. However, readability is more than just programming style. Many factors, having little or nothing to do with the ability of the computer to efficiently compile and execute the code, contribute to readability.[27] Some of these factors include:

The presentation aspects of this (such as indents, line breaks, color highlighting, and so on) are often handled by the source code editor, but the content aspects reflect the programmer’s talent and skills.

Various visual programming languages have also been developed with the intent to resolve readability concerns by adopting non-traditional approaches to code structure and display. Integrated development environments (IDEs) aim to integrate all such help. Techniques like Code refactoring can enhance readability.

Algorithmic complexity

The academic field and the engineering practice of computer programming are both largely concerned with discovering and implementing the most efficient algorithms for a given class of problem. For this purpose, algorithms are classified into orders using so-called Big O notation, which expresses resource use, such as execution time or memory consumption, in terms of the size of an input. Expert programmers are familiar with a variety of well-established algorithms and their respective complexities and use this knowledge to choose algorithms that are best suited to the circumstances.

Chess algorithms as an example

“Programming a Computer for Playing Chess” was a 1950 paper that evaluated a “minimax” algorithm that is part of the history of algorithmic complexity; a course on IBM’s Deep Blue (chess computer) is part of the computer science curriculum at Stanford University.[28]

Methodologies

The first step in most formal software development processes is requirements analysis, followed by testing to determine value modeling, implementation, and failure elimination (debugging). There exist a lot of differing approaches for each of those tasks. One approach popular for requirements analysis is Use Case analysis. Many programmers use forms of Agile software development where the various stages of formal software development are more integrated together into short cycles that take a few weeks rather than years. There are many approaches to the Software development process.

Popular modeling techniques include Object-Oriented Analysis and Design (OOAD) and Model-Driven Architecture (MDA). The Unified Modeling Language (UML) is a notation used for both the OOAD and MDA.

A similar technique used for database design is Entity-Relationship Modeling (ER Modeling).

Implementation techniques include imperative languages (object-oriented or procedural), functional languages, and logic languages.

Measuring language usage

Main article: Measuring programming language popularity

It is very difficult to determine what are the most popular modern programming languages. Methods of measuring programming language popularity include: counting the number of job advertisements that mention the language,[29] the number of books sold and courses teaching the language (this overestimates the importance of newer languages), and estimates of the number of existing lines of code written in the language (this underestimates the number of users of business languages such as COBOL).

Some languages are very popular for particular kinds of applications, while some languages are regularly used to write many different kinds of applications. For example, COBOL is still strong in corporate data centers[30] often on large mainframe computersFortran in engineering applications, scripting languages in Web development, and C in embedded software. Many applications use a mix of several languages in their construction and use. New languages are generally designed around the syntax of a prior language with new functionality added, (for example C++ adds object-orientation to C, and Java adds memory management and bytecode to C++, but as a result, loses efficiency and the ability for low-level manipulation).

Debugging

The first known actual bug causing a problem in a computer was a moth, trapped inside a Harvard mainframe, recorded in a log book entry dated September 9, 1947.[31] “Bug” was already a common term for a software defect when this bug was found.

Main article: Debugging

Debugging is a very important task in the software development process since having defects in a program can have significant consequences for its users. Some languages are more prone to some kinds of faults because their specification does not require compilers to perform as much checking as other languages. Use of a static code analysis tool can help detect some possible problems. Normally the first step in debugging is to attempt to reproduce the problem. This can be a non-trivial task, for example as with parallel processes or some unusual software bugs. Also, specific user environment and usage history can make it difficult to reproduce the problem.

After the bug is reproduced, the input of the program may need to be simplified to make it easier to debug. For example, when a bug in a compiler can make it crash when parsing some large source file, a simplification of the test case that results in only few lines from the original source file can be sufficient to reproduce the same crash. Trial-and-error/divide-and-conquer is needed: the programmer will try to remove some parts of the original test case and check if the problem still exists. When debugging the problem in a GUI, the programmer can try to skip some user interaction from the original problem description and check if remaining actions are sufficient for bugs to appear. Scripting and breakpointing is also part of this process.

Debugging is often done with IDEs like EclipseVisual StudioXcodeKdevelopNetBeans and Code::Blocks. Standalone debuggers like GDB are also used, and these often provide less of a visual environment, usually using a command line. Some text editors such as Emacs allow GDB to be invoked through them, to provide a visual environment.

Programming languages

Main articles: Programming language and List of programming languages

Different programming languages support different styles of programming (called programming paradigms). The choice of language used is subject to many considerations, such as company policy, suitability to task, availability of third-party packages, or individual preference. Ideally, the programming language best suited for the task at hand will be selected. Trade-offs from this ideal involve finding enough programmers who know the language to build a team, the availability of compilers for that language, and the efficiency with which programs written in a given language execute. Languages form an approximate spectrum from “low-level” to “high-level”; “low-level” languages are typically more machine-oriented and faster to execute, whereas “high-level” languages are more abstract and easier to use but execute less quickly. It is usually easier to code in “high-level” languages than in “low-level” ones.

Allen Downey, in his book How To Think Like A Computer Scientist, writes:The details look different in different languages, but a few basic instructions appear in just about every language:

  • Input: Gather data from the keyboard, a file, or some other device.
  • Output: Display data on the screen or send data to a file or other device.
  • Arithmetic: Perform basic arithmetical operations like addition and multiplication.
  • Conditional Execution: Check for certain conditions and execute the appropriate sequence of statements.
  • Repetition: Perform some action repeatedly, usually with some variation.

Many computer languages provide a mechanism to call functions provided by shared libraries. Provided the functions in a library follow the appropriate run-time conventions (e.g., method of passing arguments), then these functions may be written in any other language.” (WP)

Programmers

Main article: Programmer

See also: Software developer and Software engineer

Computer programmers are those who write computer software. Their jobs usually involve:” (WP)

See also

Main article: Outline of computer programming

“” (TcPd)

Fair Use Source: TcPd

Sources:

Fair Use Sources:

Categories
Software Engineering

Microsoft ASP.NET

“ASP.NET is a unified web development model integrated with .NET framework, designed to provide services to create dynamic web applications and web services. It is built on the Common Language Runtime (CLR) of the .NET framework and includes those benefits like multi-language interoperability, type safety, garbage collection and inheritance.” (TcPd)

“Mark Anders and Scott Guthrie of Microsoft created the first version of ASP.NET in 1992. It was created to facilitate the development of distributed applications in structured and object-oriented manner by separating the presentation and content and hence write clean code. ASP.NET uses the code-behind model to generate dynamic pages based on Model-View-Controller architecture.” (TcPd)


“They have some the major differences from ASP, an earlier version of ASP.NET. The object model of ASP.NET has thus significantly improved from ASP, which makes it fully backward compatible to ASP.” (TcPd)

“These differences include:
1. Usage of compiled code (instead of interpreted code),
2. Event-driven server-side scripting model,
3. State management,
4. Rapid application development using controls and libraries of the .NET framework.
5. Dynamic programming code is placed separately in a file or specially designated tag. This avoids the program code getting modified during runtime.” (TcPd)

“ASP.NET works with the Internet Information Server (IIS) to deliver the content in response to client requests. While processing the requests, ASP.NET provides access to all .NET classes, custom components and databases, similar to that of a desktop application.” (TcPd)

“Web forms are the building blocks of application development in ASP.NET. They provide lot of flexibility by allowing controls to be used on a page as objects. These controls can handle events such as Load, Click and Change, similar to those in desktop applications. Other than Web forms, ASP.NET can be used to create XML Web services that can allow building modular, distributed web applications, written in any language. These services are interoperable across variety of platforms and devices.” (TcPd)

“In addtion, ASP.NET implements state management by sending the information (viewstate) related to state of controls on a web form to the server in a postback request. It provides side-by-side execution applications of multiple denominations allowing them to be installed on the same system with different versions of .NET frameworks. Furthermore, it uses XML support for data storage, configuration and manipulation. However, when it comes to securing its applications, ASP.NET uses the code access security and role based security features of .NET framework and inherent methods of IIS for authenticating user credentials.” (TcPd)

Fair Use Source: TcPd

Sources:

Fair Use Sources: