Knowledge

Systems programming

Source 📝

458: 79:
Systems programming requires a great degree of hardware awareness. Its goal is to achieve efficient use of available resources, either because the software itself is performance critical or because even small efficiency improvements directly transform into significant savings of time or money.
405: 325:
software products had substantial code contributions from customer programming staff. This type of programming is progressively less common, and increasingly done in C rather than Assembly, but the term
273:
came out, a general-purpose programming language often used in systems programming. Rust was designed with memory safety in mind and to be as performant as C and C++.
96:
can make assumptions about the hardware and other properties of the system that the program runs on, and will often exploit those properties, for example by using an
330:
is still used as the de-facto job title for staff administering IBM mainframes even in cases where they do not regularly engage in systems programming activities.
382: 302: 293:, although the term is even used to describe job functions which do not involve mainframes. This usage arose because administration of 522: 494: 177:
Implementing certain parts in operating systems and networking requires systems programming, for example implementing paging (
262: 151: 501: 475: 17: 541: 508: 162:, if available at all, is usually far less powerful, and does less error checking. Because of those limitations, 490: 479: 258: 104: 579: 48:
is that application programming aims to produce software which provides services to the user directly (e.g.
289:. This is particularly true in organizations whose computer resources have historically been dominated by 222: 344: 270: 339: 250: 432:"Go at Google: Language Design in the Service of Software Engineering - The Go Programming Language" 584: 226: 515: 468: 266: 218: 45: 560: 286: 254: 73: 69: 61: 359: 198: 8: 143: 349: 290: 150:
In systems programming, often limited programming facilities are available. The use of
354: 194: 163: 131: 56:
which provide services to other software, are performance constrained, or both (e.g.
53: 44:. The primary distinguishing characteristic of systems programming when compared to 306: 171: 57: 564: 159: 118: 114: 41: 298: 294: 238: 178: 49: 573: 182: 431: 167: 125: 65: 93: 241:
has seen some use, for instance it is used in the I/O Kit drivers of
155: 97: 457: 202: 139: 38: 314: 285:
to describe a job function which would be more accurately termed
124:
Programs may use direct and "raw" control over memory access and
318: 310: 246: 100:
that is known to be efficient when used with specific hardware.
242: 234: 214: 206: 225:
also has applications as a systems language. In the 1970s,
52:), whereas systems programming aims to produce software and 230: 210: 88:
The following attributes characterize systems programming:
130:
The programmer may write parts of the program directly in
322: 110:
Programs can operate in resource-constrained environments
281:
For historical reasons, some organizations use the term
482:. Unsourced material may be challenged and removed. 253:in 2007 to address developer productivity in large 193:Originally systems programmers invariably wrote in 174:may have extremely elaborate logging subsystems. 107:or programming language dialect is used so that: 571: 383:"Panel: Systems Programming in 2014 and Beyond" 146:can sometimes be used to reduce this problem. 201:in the late 1960s led to such languages as 257:, with developer-focused features such as 229:became widespread, aided by the growth of 138:Often systems programs cannot be run in a 542:Learn how and when to remove this message 406:"I/O Kit Device Driver Design Guidelines" 403: 117:overhead, possibly having either a small 27:Developing programs for computer systems 197:. Experiments with hardware support in 14: 572: 276: 113:Programs can be efficient with little 297:often involved the writing of custom 480:adding citations to reliable sources 451: 377: 375: 24: 554: 305:(BAL)), which integrated with the 25: 596: 372: 37:, is the activity of programming 456: 467:needs additional citations for 424: 397: 105:low-level programming language 13: 1: 365: 303:IBM's Basic Assembly Language 158:is sometimes hard to do. The 404:Apple Inc (14 August 2009). 233:. More recently a subset of 152:automatic garbage collection 7: 345:System programming language 333: 142:. Running the program in a 83: 10: 601: 188: 185:for an operating system. 269:than C and C++. In 2015 245:. Engineers working at 219:Burroughs large systems 46:application programming 340:Ousterhout's dichotomy 491:"Systems programming" 287:systems administrator 265:, and faster program 144:simulated environment 74:software as a service 70:industrial automation 62:computational science 580:Computer programming 476:improve this article 360:Computer Programming 199:high level languages 561:Systems Programming 410:developer.apple.com 277:Alternative meaning 255:distributed systems 31:Systems programming 350:Scripting language 328:systems programmer 283:systems programmer 263:Garbage Collection 154:is not common and 54:software platforms 35:system programming 18:System programming 552: 551: 544: 526: 355:Interrupt handler 195:assembly language 172:operating systems 132:assembly language 58:operating systems 16:(Redirected from 592: 547: 540: 536: 533: 527: 525: 484: 460: 452: 446: 445: 443: 442: 428: 422: 421: 419: 417: 401: 395: 394: 392: 390: 379: 321:. Indeed, some 307:operating system 170:are often used; 21: 600: 599: 595: 594: 593: 591: 590: 589: 585:System software 570: 569: 565:John J. Donovan 557: 555:Further reading 548: 537: 531: 528: 485: 483: 473: 461: 450: 449: 440: 438: 430: 429: 425: 415: 413: 402: 398: 388: 386: 381: 380: 373: 368: 336: 279: 213:, and extended 191: 160:runtime library 119:runtime library 86: 76:applications). 42:system software 28: 23: 22: 15: 12: 11: 5: 598: 588: 587: 582: 568: 567: 556: 553: 550: 549: 532:September 2014 464: 462: 455: 448: 447: 423: 396: 370: 369: 367: 364: 363: 362: 357: 352: 347: 342: 335: 332: 299:assembler code 295:IBM mainframes 278: 275: 190: 187: 179:virtual memory 148: 147: 136: 135: 134: 128: 122: 121:or none at all 111: 101: 85: 82: 64:applications, 50:word processor 26: 9: 6: 4: 3: 2: 597: 586: 583: 581: 578: 577: 575: 566: 562: 559: 558: 546: 543: 535: 524: 521: 517: 514: 510: 507: 503: 500: 496: 493: –  492: 488: 487:Find sources: 481: 477: 471: 470: 465:This article 463: 459: 454: 453: 437: 433: 427: 411: 407: 400: 384: 378: 376: 371: 361: 358: 356: 353: 351: 348: 346: 343: 341: 338: 337: 331: 329: 324: 320: 316: 312: 308: 304: 300: 296: 292: 288: 284: 274: 272: 268: 264: 260: 256: 252: 248: 244: 240: 236: 232: 228: 224: 220: 216: 212: 208: 204: 200: 196: 186: 184: 183:device driver 180: 175: 173: 169: 165: 161: 157: 153: 145: 141: 137: 133: 129: 127: 123: 120: 116: 112: 109: 108: 106: 102: 99: 95: 91: 90: 89: 81: 77: 75: 71: 67: 63: 59: 55: 51: 47: 43: 40: 36: 32: 19: 538: 529: 519: 512: 505: 498: 486: 474:Please help 469:verification 466: 439:. Retrieved 435: 426: 416:16 September 414:. Retrieved 409: 399: 387:. Retrieved 327: 282: 280: 239:Embedded C++ 192: 176: 149: 126:control flow 87: 78: 66:game engines 34: 30: 29: 412:. Apple Inc 385:. Microsoft 267:compilation 259:Concurrency 574:Categories 502:newspapers 441:2024-04-11 389:4 December 366:References 291:mainframes 164:monitoring 103:Usually a 94:programmer 156:debugging 98:algorithm 334:See also 309:such as 249:created 140:debugger 84:Overview 39:computer 516:scholar 315:DOS/VSE 237:called 189:History 181:) or a 168:logging 115:runtime 518:  511:  504:  497:  489:  436:go.dev 319:VM/CMS 311:OS/MVS 247:Google 72:, and 523:JSTOR 509:books 243:macOS 223:Forth 215:ALGOL 207:BLISS 33:, or 495:news 418:2014 391:2015 271:Rust 231:Unix 217:for 211:BCPL 203:PL/S 166:and 92:The 563:by 478:by 323:IBM 317:or 235:C++ 576:: 434:. 408:. 374:^ 313:, 261:, 251:Go 221:. 209:, 205:, 68:, 60:, 545:) 539:( 534:) 530:( 520:· 513:· 506:· 499:· 472:. 444:. 420:. 393:. 301:( 227:C 20:)

Index

System programming
computer
system software
application programming
word processor
software platforms
operating systems
computational science
game engines
industrial automation
software as a service
programmer
algorithm
low-level programming language
runtime
runtime library
control flow
assembly language
debugger
simulated environment
automatic garbage collection
debugging
runtime library
monitoring
logging
operating systems
virtual memory
device driver
assembly language
high level languages

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.