Skip to content

Commit 92d469b

Browse files
klaeuferCopilot
andcommitted
Apply HIGH-priority fixes from REVIEW-20260424b
- ch20: update Scala 2 REPL transcript to Scala 3 format (val/def prefixes on output, def signature without parens syntax) - ch60: replace 4 dead feedproxy.google.com SE Radio links with working se-radio.net URLs (eps 12, 19, 29) + add ep 348 (Terrell) - ch60: update Java 8 java.util.concurrent link to Java 21 API - ch60: upgrade http Scala docs links to https - all: bulk upgrade http:// to https:// for wikipedia, scala-lang, typelevel, martinfowler, akka, android developer domains - ch50: fix dead benchmarksgame alioth link to current debian.net URL Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 2baf55b commit 92d469b

7 files changed

Lines changed: 35 additions & 35 deletions

source/05-overview.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ The course begins with context and background (software engineering practices, l
6666
Bloom's taxonomy
6767
~~~~~~~~~~~~~~~~
6868

69-
The letters refer to the successive levels of learning from the cognitive domain of `Bloom's taxonomy <http://en.wikipedia.org/wiki/Bloom's_taxonomy#Cognitive>`_:
69+
The letters refer to the successive levels of learning from the cognitive domain of `Bloom's taxonomy <https://en.wikipedia.org/wiki/Bloom's_taxonomy#Cognitive>`_:
7070

7171
- K: know/remember the term
7272
- C: comprehend/understand the concept

source/10-background.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ Software design principles and patterns
119119

120120
The software development community has identified various principles intended to guide the design and development process, for example:
121121

122-
- `DRY <http://en.wikipedia.org/wiki/Don%27t_repeat_yourself>`_ (don't repeat yourself)
122+
- `DRY <https://en.wikipedia.org/wiki/Don%27t_repeat_yourself>`_ (don't repeat yourself)
123123
- `SoC <https://en.wikipedia.org/wiki/Separation_of_concerns>`_ (separation of concerns)
124124
- `SOLID <https://en.wikipedia.org/wiki/SOLID_(object-oriented_design)>`_
125125

source/20-imperative.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -248,19 +248,19 @@ In this section, we discuss the different options for running Scala code, includ
248248
Type in expressions for evaluation. Or try :help.
249249
250250
scala> 3 + 4
251-
res0: Int = 7
251+
val res0: Int = 7
252252
253253
scala> def f(x: Int) = x + 2
254-
f: (x: Int)Int
254+
def f(x: Int): Int
255255
256256
scala> f(3)
257-
res1: Int = 5
257+
val res1: Int = 5
258258
259259
scala> val z = f(4)
260-
z: Int = 6
260+
val z: Int = 6
261261
262262
scala> Seq(1, 2, 3).map(f)
263-
res2: Seq[Int] = List(3, 4, 5)
263+
val res2: Seq[Int] = List(3, 4, 5)
264264
265265
266266
This is a very effective, painless way to conduct initial explorations.

source/40-functional.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,7 @@ A closer look at predefined behaviors on lists
853853

854854
In this section, we take a look "under the hood" of some key predefined behaviors on lists.
855855

856-
In terms of performance, we must keep in mind that `lists are head/tail-optimized <http://www.scala-lang.org/api/current/scala/collection/immutable/List.html>`_.
856+
In terms of performance, we must keep in mind that `lists are head/tail-optimized <https://www.scala-lang.org/api/current/scala/collection/immutable/List.html>`_.
857857
In other words, these are basically singly-linked lists, so any behaviors where we access the first node of the list are constant-time, while behaviors involving nodes further down in the list are linear-time.
858858
In practice, acceptable performance usually means linear time for behavior where we process the entire list.
859859

@@ -1054,7 +1054,7 @@ On the behavioral side, we recognize the great potential for code reuse resultin
10541054

10551055
- `Cats library of high-level abstractions <https://typelevel.org/cats>`_
10561056
- `Droste library of recursion schemes <https://github.com/higherkindness/droste>`_
1057-
- Various other `Typelevel.scala projects <http://typelevel.org/projects>`_
1057+
- Various other `Typelevel.scala projects <https://typelevel.org/projects>`_
10581058

10591059
For more details on F-algebras and datatype-generic programming, please take a look at these references:
10601060

source/50-representationinterpretation.rst

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ To this end, we need to talk about the toolchain required to do so, as well as t
88
Programming language toolchains
99
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1010

11-
We will start with an overview of the phases of programming language `compilation <http://en.wikipedia.org/wiki/Compiler>`_/`interpretation <http://en.wikipedia.org/wiki/Interpreter_(computing)>`_ toolchain:
11+
We will start with an overview of the phases of programming language `compilation <https://en.wikipedia.org/wiki/Compiler>`_/`interpretation <https://en.wikipedia.org/wiki/Interpreter_(computing)>`_ toolchain:
1212

1313
- source code (string stored in file)
1414
- *lexical analysis*
@@ -91,7 +91,7 @@ Alternative front-end approaches
9191
- `Getting-started guide <https://github.com/scala/scala-parser-combinators/blob/main/docs/Getting_Started.md>`_
9292
- `simple expression combinator parser example <https://github.com/lucproglangcourse/expressions-scala/blob/master/src/main/scala/CombinatorParser.scala>`_
9393

94-
- `parsing expression grammars <http://en.wikipedia.org/wiki/Parsing_expression_grammar>`_
94+
- `parsing expression grammars <https://en.wikipedia.org/wiki/Parsing_expression_grammar>`_
9595
- `From EBNF to PEG <http://ceur-ws.org/Vol-928/0324.pdf>`_
9696
- Parboiled 2 PEG library
9797

@@ -105,12 +105,12 @@ Programming language semantics
105105

106106
Semantics, a formalization of the *meaning* of programs in a particular language, includes *static* and *dynamic* semantics.
107107

108-
- `static semantics <http://en.wikipedia.org/wiki/Programming_language#Semantics>`_ (compile-time)
108+
- `static semantics <https://en.wikipedia.org/wiki/Programming_language#Semantics>`_ (compile-time)
109109

110110
- flow analysis
111111
- typing
112112

113-
- `dynamic semantics <http://en.wikipedia.org/wiki/Semantics_of_programming_languages>`_ (run-time)
113+
- `dynamic semantics <https://en.wikipedia.org/wiki/Semantics_of_programming_languages>`_ (run-time)
114114

115115
- denotational
116116
- operational, e.g. our interpreters
@@ -119,7 +119,7 @@ Semantics, a formalization of the *meaning* of programs in a particular language
119119
The Interpreter pattern is related to the discussion of dynamic semantics.
120120

121121
- http://c2.com/cgi/wiki?InterpreterPattern
122-
- http://en.wikipedia.org/wiki/Interpreter_pattern
122+
- https://en.wikipedia.org/wiki/Interpreter_pattern
123123

124124

125125
Case study: a simple imperative language
@@ -387,11 +387,11 @@ Type systems are an important aspect of programming languages. We identify the f
387387

388388
Additional information is available here:
389389

390-
- `design space and tradeoffs <http://en.wikipedia.org/wiki/Type_system>`_
391-
- `representative examples <http://en.wikipedia.org/wiki/Comparison_of_type_systems>`_
390+
- `design space and tradeoffs <https://en.wikipedia.org/wiki/Type_system>`_
391+
- `representative examples <https://en.wikipedia.org/wiki/Comparison_of_type_systems>`_
392392
- `comprehensive list <https://en.wikipedia.org/wiki/Comparison_of_programming_languages_by_type_system>`_
393393
- `presentation slides 10-29 <http://klaeufer.github.io/luc-amc.html#(10)>`_
394-
- `performance implications/shootout <http://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest.php>`_
394+
- `performance implications/shootout <https://benchmarksgame-team.pages.debian.net/benchmarksgame/which-programs-are-fastest.html>`_
395395

396396

397397
.. note:: **Cardelli/Wegner polymorphism taxonomy**
@@ -440,8 +440,8 @@ In addition, there is a continuum between APIs and internal DSLs.
440440
Additional information is available here:
441441

442442
- http://c2.com/cgi/wiki?DomainSpecificLanguage
443-
- http://martinfowler.com/bliki/FluentInterface.html
444-
- http://martinfowler.com/bliki/DomainSpecificLanguage.html
445-
- http://martinfowler.com/books/dsl.html
446-
- http://en.wikipedia.org/wiki/Domain-specific_language
443+
- https://martinfowler.com/bliki/FluentInterface.html
444+
- https://martinfowler.com/bliki/DomainSpecificLanguage.html
445+
- https://martinfowler.com/books/dsl.html
446+
- https://en.wikipedia.org/wiki/Domain-specific_language
447447
- `SE Radio episode 182 <http://feedproxy.google.com/~r/se-radio/~3/2VCOnKZ97MU/>`_

source/60-concurrency.rst

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -440,19 +440,19 @@ Several specific concurrency mechanisms can come as language constructs, pattern
440440
- fully synchronized object (pattern/building blocks)
441441
- Android (also familiar from 313/413)
442442

443-
- `AsyncTask <http://developer.android.com/reference/android/os/AsyncTask.html>`_ *(deprecated in Android API 30; prefer* `Kotlin coroutines <https://developer.android.com/kotlin/coroutines>`_ *or* `WorkManager <https://developer.android.com/topic/libraries/architecture/workmanager>`_ *)*
444-
- `ThreadPoolExecutor <http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html>`_
443+
- `AsyncTask <https://developer.android.com/reference/android/os/AsyncTask.html>`_ *(deprecated in Android API 30; prefer* `Kotlin coroutines <https://developer.android.com/kotlin/coroutines>`_ *or* `WorkManager <https://developer.android.com/topic/libraries/architecture/workmanager>`_ *)*
444+
- `ThreadPoolExecutor <https://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html>`_
445445

446-
- `java.util.concurrent <https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/package-summary.html>`_
446+
- `java.util.concurrent <https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/concurrent/package-summary.html>`_
447447

448448
- atomic variables
449449
- thread-safe collections
450450
- FIFO locks
451451
- ...
452452

453-
- `Scala parallel collections <http://docs.scala-lang.org/overviews/parallel-collections/overview.html>`_
454-
- `futures and promises intro <http://docs.scala-lang.org/overviews/core/futures.html>`_
455-
- `composable futures in Scala/Akka <http://doc.akka.io/docs/akka/current/scala/futures.html>`_
453+
- `Scala parallel collections <https://docs.scala-lang.org/overviews/parallel-collections/overview.html>`_
454+
- `futures and promises intro <https://docs.scala-lang.org/overviews/core/futures.html>`_
455+
- `composable futures in Scala/Akka <https://doc.akka.io/docs/akka/current/scala/futures.html>`_
456456

457457
.. note:: As of 2022, Akka is under a commercial license (Lightbend). The open-source Scala ecosystem has largely shifted to `Cats Effect <https://typelevel.org/cats-effect/>`_ and `ZIO <https://zio.dev/>`_ for structured concurrency. Both provide safe, composable, and purely functional abstractions for asynchronous and concurrent programming.
458458

@@ -470,10 +470,10 @@ References: concurrent and asynchronous computing
470470
- Goetz et al., `JCIP <http://jcip.net.s3-website-us-east-1.amazonaws.com>`_
471471
- Doug Lea, `CPJ <http://gee.cs.oswego.edu/dl/cpj>`_
472472
- Thiruvathukal and Christopher, `HPJPC <https://code.google.com/p/hpjpc/>`_
473-
- `SE Radio episode on concurrency: part 1 <http://feedproxy.google.com/~r/se-radio/~3/lJLihLsyf0M/>`_
474-
- `SE Radio episode on concurrency: part 2 <http://feedproxy.google.com/~r/se-radio/~3/Wh7E6YT1_JI/>`_
475-
- `SE Radio episode on concurrency: part 3 <http://feedproxy.google.com/~r/se-radio/~3/WZ7h3kzRARY/>`_
476-
- `SE Radio episode on concurrency: part 4 <http://feedproxy.google.com/~r/se-radio/~3/bqICWnvwuGw/>`_
473+
- `SE Radio episode 12: Concurrency pt. 1 <https://se-radio.net/2006/04/episode-12-concurrency-pt-1/>`_
474+
- `SE Radio episode 19: Concurrency pt. 2 <https://se-radio.net/2006/06/episode-19-concurrency-pt-2/>`_
475+
- `SE Radio episode 29: Concurrency pt. 3 <https://se-radio.net/2006/09/episode-29-concurrency-pt-3/>`_
476+
- `SE Radio episode 348: Riccardo Terrell on Concurrency <https://se-radio.net/2018/12/se-radio-episode-348-riccardo-terrell-on-concurrency/>`_
477477
- `futures and promises overview <http://arild.github.io/scala-workshop/#/12>`_
478478
- `RxJava/RxScala <https://github.com/ReactiveX/RxScala>`_
479479
- `asynchronous programming video <https://www.youtube.com/watch?v=UKjcJ13bD3s>`_

source/83-resources.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,9 @@ Online Scala resources
110110
- `Twitter Scala School <http://twitter.github.io/scala_school/>`_ *(Scala 2; syntax may differ from Scala 3)*
111111
- `Scala resources from an Applied Text Analysis course <http://ata-s12.utcompling.com/links>`_
112112
- `Scala documentation site <http://docs.scala-lang.org>`_
113-
- `A Scala Tutorial for Java programmers <http://www.scala-lang.org/docu/files/ScalaTutorial.pdf>`_ *(Scala 2, 2006; for current equivalents use the official Scala 3 tour)*
114-
- `Scala API documentation <http://www.scala-lang.org/api/current/#package>`_
115-
- `Scala style guide <http://docs.scala-lang.org/style>`_
113+
- `A Scala Tutorial for Java programmers <https://www.scala-lang.org/docu/files/ScalaTutorial.pdf>`_ *(Scala 2, 2006; for current equivalents use the official Scala 3 tour)*
114+
- `Scala API documentation <https://www.scala-lang.org/api/current/#package>`_
115+
- `Scala style guide <https://docs.scala-lang.org/style>`_
116116
- `Scala Cookbook (recommended) <http://scalacookbook.com/>`_
117117
- `parboiled2 parser generator <https://github.com/sirthias/parboiled2>`_
118118
- `Cats documentation <https://typelevel.org/cats/>`_ — typeclass abstractions (Functor, Monoid, Monad, etc.) for Scala (advanced)
@@ -128,7 +128,7 @@ Resources on program representation and interpretation
128128
- `Extended BNF <https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form>`_
129129
- `Parser generators <https://en.wikipedia.org/wiki/Compiler-compiler>`_
130130
- `Parser combinators <https://en.wikipedia.org/wiki/Parser_combinator>`_
131-
- `Parsing expression grammars (PEGs) <http://en.wikipedia.org/wiki/Parsing_expression_grammar>`_
131+
- `Parsing expression grammars (PEGs) <https://en.wikipedia.org/wiki/Parsing_expression_grammar>`_
132132
- `Interpreters <https://en.wikipedia.org/wiki/Interpreter_(computing)>`_
133133

134134
Other resources

0 commit comments

Comments
 (0)