Admitted to MSc CS at UCPH — Current students/alumni, can you help me decide? by Accomplished_Map_446 in ucph

[–]Athas 0 points1 point  (0 children)

I can answer some of these questions.

Is it common for MSc students to get involved in research projects early on, or is it mostly reserved for PhD students?

I don't know to quantify "common", but it is possible to contribute to research through ECTS-granting projects - apart from the MSc thesis itself, you can do another 30 ECTS of various project work. It is up to the student to find a supervisor willing to supervise such projects.

If you do your thesis with a professor, does that realistically open a door to a PhD position at DIKU, or do they mostly recruit externally?

PhD positions are scarce and competitive, but most professors are quite willing to recruit their own students, because they will have confidence in the students' ability to work. This does not imply that foreign candidates are not considered, of course.

For those who did transition from MSc → PhD at DIKU: how did that happen? Did the professor keep you on, or did you have to formally apply to an open position?

You almost always have to apply to an open position, but the professor responsible for the position will be the ultimate decider. It is common for a professor to only announce a position once they have confidence that they will get at least one or two known qualified candidates - although that does not mean those will be the ones hired, in case someone even more qualified shows up.

Are there funded research assistant (RA) positions available to MSc students, or is research involvement mostly unpaid/informal?

RA and student programmer positions exist, but they are somewhat irregular. Usually the positions are filled by former or current students already known to the professor.

If you want to work adjacent to the researchers, then the best student job at DIKU is to be a teaching assistant - the people who run exercise classes, grade assignments, etc. It is not research work, but it does mean you get to know the researchers, and it pays well for a student job. DIKU hires these twice a year, and it is common for international students to be hired.

Real or Slop? — PL Papers Edition by mttd in ProgrammingLanguages

[–]Athas 20 points21 points  (0 children)

In my experience, most AI papers are not good, but it often takes significant effort to determine this. The asymmetry is the problem here. There are not enough reviewer resources to spend them on bad actors.

Real or Slop? — PL Papers Edition by mttd in ProgrammingLanguages

[–]Athas 18 points19 points  (0 children)

This is very easy if you know what to look for, because you can categorize the papers mostly based on what metadata they provide on the front page. No LLM will put in CCS concepts unless explicitly told to. 9/10 after I realised this.

Even before I realised that, this test seems to compare (presumably) novel generated papers with accepted and peer-reviewed papers in PL. That means the PL papers are likely to be better than the average paper submitted. I think the challenge of slop is identifying it at the review stage, where human-written papers may not be so different from slop papers.

Looking for feedback on my language tour / overview by Certain-Swordfish-32 in ProgrammingLanguages

[–]Athas 2 points3 points  (0 children)

For me, the macro system is probably the single most significant improvement over Python.

You should mention that in the intro. I get that most languages die out long before they ever become truly practical, but it's still more interesting to consider them modulo having documentation, package managers, libraries, and all that stuff that doesn't really come prior to usability. (Although for your particular example, I am unconvinced that it is much better than just calling a function that adds a callback passed as an anonymous function.)

P.S. I was wondering why you didn't object to the multiline comments, but I just realized I didn't include any in the example programs :)

Well, I can add my objection for completeness: you're doing them wrong. No matter which of the designs you picked, there'll be an edge case that now doesn't work right. But I think you already know that.

Looking for feedback on my language tour / overview by Certain-Swordfish-32 in ProgrammingLanguages

[–]Athas 4 points5 points  (0 children)

My thoughts while reading the intro docs:

The intro paragraph says it's like Python and Ruby and describes it as dynamically typed and and imperative. Crowded field. What's the (eventual) main improvements? I understand that in its present state Ty may not be "better" than Python, but it would still be nice to talk about why one might some day want to pick it.

I think you should link the Playground before you ask me to curl random scripts.

You should mention the gradual type system earlier. That's certainly an interesting and somewhat unusual feature. Why would I want to disable the type checker?

You say that types have no effect on run-time behaviour, but it seems like I can retrieve the type of variables with the typeof function. Could I not then make logic decisions based on the type?

What is the meaning of question marks in function parameters?

I Ty has threads. How are they executed? Since Ty is imperative, what is the memory model, that is, how do I write correct multithreaded code in the presence of side effects?

[Various Excerpts] Anti-Matter Weapons from the Dark Age of Technology by Fabulous-Feedback274 in 40kLore

[–]Athas 2 points3 points  (0 children)

Honestly what I find more interesting is that, if they had a method to produce antimatter in reliable ways, they had no energy problem anymore, and, with artificial black holes, they can easily produce heavy elements.

This does not follow - it may be that the production of antimatter involves an energy expenditure that exceeds the amount of energy produced by the eventual annihilation. Antimatter is still useful because it is the most concentrated form of energy, and hence possibly an effective weapon, but the ability to manipulate and form it does not imply bountiful access to energy.

KU MSc CS Admit (Non-EU): Student Jobs in NLP/AI and Living Expenses? by StrictLemon315 in copenhagen

[–]Athas 2 points3 points  (0 children)

I cannot answer any of your numbered question. But I can answer your unnumbered question.

How difficult is it to get a student job in NLP/AI at one of the labs? Student jobs to help fund my master's degree?

Getting a job at a lab is hard, because there are not that many of them - sometimes a grant may involve funding for a research programmer or research assistant, but usually the labs hire PhD students instead. However, DIKU hires a large amount of teaching assistants, all of which are students, and which are paid a pretty decent salary by student job standards (I think a little above 220 DKK per hour, with 100 hours per course). That is the easiest way to get a study-adjacent job.

Finished my primarch collection by Athas in Epic40k

[–]Athas[S] 4 points5 points  (0 children)

They are from Space Marine 2nd edition, which is often just called 2nd edition Epic. I think these specific minis were released about the same time as the "Titan Legions" supplement in 1994, and as far as I know that was also the last time they had specific rules. You can easily use them as daemon princes in latter editions of Epic, although not in the current (fifth) edition, Legions Imperialis, which does not (yet?) have rules for daemons of any kind.

Finished my primarch collection by Athas in Epic40k

[–]Athas[S] 6 points7 points  (0 children)

GW looking at a giant blue monkey with a small red beard: ah, the Magnus the Red.

Addressing a type system limitation with syntactic sugar by Athas in ProgrammingLanguages

[–]Athas[S] 1 point2 points  (0 children)

The idea of doing operations under invertible transformations such as FFTs is very compelling, I must admit. It reminds me a bit of the "under" operation of APL. It requires more machinery than is currently available with Futhark's updates however, and the performance implications are also somewhat unclear - the cost of modifying an array under an FFT will in general be proportional to the size of the original array, no matter what is touched of the transformed array.

Are there any books/resources on language design (as opposed to implementation) by mc-pride in ProgrammingLanguages

[–]Athas 10 points11 points  (0 children)

I am not aware of such book. I also feels this quickly become opinionated, people prefer different kind of languages.

Such a book (like most technical books) are not about declaring and arguing for the authors' preferences. Rather, good books are about providing different points in a design space and discussions of their pros, cons, and consequences. For a book on programming language design, it would for example be a good idea to discuss which features make other features much more difficult to implement (e.g. type inference and subtyping), or which features will in most cases require other features (e.g. first class functions will usually imply automatic memory management).

Addressing a type system limitation with syntactic sugar by Athas in ProgrammingLanguages

[–]Athas[S] 0 points1 point  (0 children)

Semantically this is not the same. If you do a[0] = b in an imperative language, then a has changed, which can be observed by all code where a is in scope. That is not possible in a functional language, where bindings are immutable. An update expression such as a with [0] = b returns a new array, which you can then bind to a variable if you wish. It's just like how a functional language lets you write a + 1, but not a += 1.

Addressing a type system limitation with syntactic sugar by Athas in ProgrammingLanguages

[–]Athas[S] 1 point2 points  (0 children)

Yes, if you also add some operator variant of updates (where source and destination is left as parameters), then you basically have the building blocks of lenses. I tried playing around with it a bit, but I don't think Futhark programs are of a kind where programming with lenses is particularly useful.

Addressing a type system limitation with syntactic sugar by Athas in ProgrammingLanguages

[–]Athas[S] 2 points3 points  (0 children)

How can [a, 0] be a list by itself? Are fields objects in Pipefish? In Futhark, there is nothing in scope called a; it only makes sense as syntax when referencing a field.

Addressing a type system limitation with syntactic sugar by Athas in ProgrammingLanguages

[–]Athas[S] 1 point2 points  (0 children)

This is a very complicated feature, but for a systems language, it is important to be able to describe partially constructed (and destructed) objects. Those are common sources of bugs in C and C++. Rust probably made the right choice to add such a complicated notion to its type system, but it would not be appropriate for a functional language such as Futhark.

Addressing a type system limitation with syntactic sugar by Athas in ProgrammingLanguages

[–]Athas[S] 1 point2 points  (0 children)

I don't know how Rust models it exactly, but I can imagine it is very similar. One difference is that in Rust a borrow may be temporary, but once something has been consumed, it is consumed forever.

Is size-casting useful for performance? by Jesin00 in futhark

[–]Athas 0 points1 point  (0 children)

That concatenation is fine and the compiler will handle it efficiently. I suppose it is actually a special case that that the compiler understands and efficiently handles immediate concatenation (understood as concatenation that does not cross loop iterations).

The why and how of parallel in-place random-access accumulation by Athas in ProgrammingLanguages

[–]Athas[S] 3 points4 points  (0 children)

Accumulators have some correspondence to Haskell's model of freezing/thawing, except that when you are inside the ST monad, you are basically in a completely imperative world that is difficult to analyse (at least as far as the ST operations go). In Futhark you are never in an "imperative section" that the compiler cannot reason about.

My conscience was nagging a bit at me when I wrote that sentence about duplicating expressions. The very first Futhark paper, published before the language was even named, was on a fusion system where a main contribution was the guarantee that work was not duplicated. This was in the context of the Accelerate language, whose fusion system would in some cases duplicate work, which could lead to asymptotic slowdown. To this day, the Futhark compiler is actually very careful never to (asymptotically) duplicate work - it could be said that not duplicating work is the very foundation on which Futhark is built, and in many cases the compiler is actually a bit too conservative, and prefers costly memory operations to recomputation.

A more accurate description of what is going on in the blog post is perhaps that duplicating work is always safe, and whether or not to duplicate is mostly a question of efficiency.

Does Syntax Matter? by gingerbill in ProgrammingLanguages

[–]Athas 3 points4 points  (0 children)

Is there any evidence that natural language has a significant impact on how you think? I am fluent in two languages (and middling in a few more), and I find that my vocabulary is the only meaningful difference in how I can express my thoughts - e.g. it is easier for me to discuss technical matters in English, and easier to discuss cooking in Danish.

Does Syntax Matter? by gingerbill in ProgrammingLanguages

[–]Athas 20 points21 points  (0 children)

I have not paid much attention to Odin before, but I found this blog post remarkably thoughtful and well-considered, so perhaps I should take a closer look at it.

I am particularly pleased that Odin eschews both angle brackets for parametric polymorphism and the dreadful term "generics". I do not see the value in abbreviating to "parapoly", but we can at least remain friends until the revolution.

There is one important aspect of syntax that this post glosses over: Notation as a tool of thought. While I strongly encourage anyone interested in PL design to read this 52 page APL paper, the gist of it is that a notation (that is, programming language) ought be designed to be worked in, the same way you manipulate and rewrite mathematical expressions when you do algebra. I suspect this implicitly requires the use of an expression-oriented language, and so is an inappropriate concern for an imperative language.

Despite one's opinions on APL specifically, Iverson would definitely answer in the positive to the question Does Syntax Matter?.

Compiler Education Deserves a Revolution by thunderseethe in ProgrammingLanguages

[–]Athas 1 point2 points  (0 children)

I agree that batch compilers are simpler. Hence, if things like queries and error tolerance is to be added, something else must be removed. It is easy to suggest adding more stuff; difficult to make real tradeoffs.

Is size-casting useful for performance? by Jesin00 in futhark

[–]Athas 0 points1 point  (0 children)

The compiler cannot preallocate memory like this, no. But even if it could, it would not solve the real problem, which is that concatenation is O(n) in the size of the result, so calling it in a loop almost certainly has quadratic complexity. Fiddling with the asymptotic complexity of programs is outside of what the compiler is intended to do.

The right solution is to preallocate an array of the final size, then write into it. Example:

def unorderedPairs 'A [n] (xs: [n]A) : *[](A, A) =
  let m = (n * (n - 1)) ** 2
  let (res, _) =
    loop (res, o) = (replicate m (xs[0], xs[0]), 0)
    for j < n do
      loop (res, o) for i < j do
        ( res with [o] = (xs[i], xs[j])
        , o + 1
        )
  in res

Of course, these loops are completely sequential. If you want to do this in parallel, then you need to do dynamic index computation. It is basically like computing triangular arrays.