mirror of
https://github.com/jackyzha0/quartz.git
synced 2025-12-24 13:24:05 -06:00
99 lines
2.9 KiB
Markdown
99 lines
2.9 KiB
Markdown
---
|
||
title: "libraries"
|
||
aliases: code libraries, libraries, software library
|
||
tags:
|
||
- cosc202
|
||
---
|
||
|
||
|
||
# what is a software library
|
||
|
||
- collections of potentailly useful code.
|
||
- implement comon fuunctionality so you dont have to
|
||
- e.g.,
|
||
- music processign
|
||
- game engines
|
||
- etc.
|
||
|
||
- languages may include standard libraries
|
||
- *standard library* is one that is always available within a language
|
||
- e.g., Java standard library
|
||
- these make up only a small part of the broader available library functionality
|
||
|
||
|
||
# Pros and cons of libraries
|
||
|
||
- utf-8 conversion tables and collation schemes
|
||
- e.g., for comparing equality of e.g., 'M<>?ori' and 'Maori'.
|
||
- this equality depends on the 'collation' scheme that is being used
|
||
- conversion tables and collations are need for all known languages
|
||
- it is good to not have to rewite these for each piece of software
|
||
- just use a library
|
||
|
||
- library code quality
|
||
- well written libraries can propogate great benefits
|
||
- econoomies of scale from reusilng good implementations
|
||
- somebody needs to pay for the develp ment of the library
|
||
- needs to be maintained
|
||
- There is a downside - code homogeneity
|
||
- all programs using the same library carry the same security bugs
|
||
- if you dont know the librar;y in detail you may not be able to fully utilise it
|
||
|
||
- deep experience libraries
|
||
- intel creates libraries that utilise their CPUs the best
|
||
- they dont have to wait for library to be made that fully utilises their hardware
|
||
-
|
||
|
||
# understand trasitive dependencies in libraries
|
||
https://xkcd.com/2347/
|
||
|
||
libraries rely on other libraries. These are called transitive dependencies.
|
||
|
||
Software bill of materials enumerate what you depend on.
|
||
when one of the libraries you use is updates, you may need to update to .
|
||
|
||
# how they are provided
|
||
- provided within language
|
||
- some OSs provide large amounts of functionality
|
||
- e.g., apple ecosystem
|
||
- co dev of language and OS
|
||
- microsoft windows ecosystem
|
||
- .net
|
||
|
||
# your obligations from using libraries
|
||
|
||
mulitple different ways to interact with libraries
|
||
- tight integration compiler builds library code into yours
|
||
- only uses parts of library that you included in your app
|
||
- but upgrading library requires rebuilding the app
|
||
- library is packed alongside you app
|
||
- may bloat youu app: includes unused library parts
|
||
- licencing of the library
|
||
- legal obligations
|
||
|
||
# considerations when writing libraries
|
||
- must consider general use cases
|
||
- proper documentation
|
||
- future maintenance
|
||
- include abstractions to facilitate incremental updates
|
||
- version numbering is important for compatibility
|
||
- minor changes wont affect existing code
|
||
- major changes will affect existing code
|
||
|
||
# features of Java standard libraries
|
||
- very large
|
||
- e.g., two flavours of I/O
|
||
- traditional
|
||
- async i.e., non-blocking (NIO)
|
||
- written in java
|
||
- portable across OSs
|
||
- thin layer of OS specific code
|
||
- this helped it to
|
||
|
||
# FYI "Boost"ing C++ library support
|
||
|
||
boost is a rich set of libraries for C++
|
||
|
||
|
||
|