Hacker Timesnew | past | comments | ask | show | jobs | submit | ilkhd's commentslogin

I once came on interview with a very big company, a lady that interviewed me slowly began to become medieval and very angry - for no reason, so I got afraid of her and just walked away myself, for goodnes sake. A guy before her was friendly.


Feels a lot like urban legends.


In my cause it is Mother of Falling Asleep.


PHP. I am serous.


You got downvoted, I'm upvoting you. I'll seriously consider it despite the prejudice against it.

The CDBaby story had me thinking about it.


Not "NES processor", but "NES" itself. "NES processor" is justa a 6502 cloned thousands of times.


Some ARM's have support for JVM bytecode - so what? Anybody heard about them?


Cranky much?

Maybe your board doesn't have a jazelle-capable part, or you lack licensing for it (jazelle isn't publicly documented, sadly). Maybe you do have a bunch of gates left over on your FPGA.

I mean, it looks like a cool hack to me.


Cranky??



The Jazelle extension requires paying money to access on how to set it up. Also as others have pointed out using hardware supported java prohibits a lot of dynamic optimizations.

ARM seem to be mostly concentrating on the ThumbEE environment now, which is much better documented.


It is interesting to observe how people abuse words, to the points they become distraction. "Java stack", "Erlang stack", "Everything stack"; "by means", "using" became "via". Modern articles are "massively leveraged via stacks" it seems like.


Java's JIT - this part is really interesting.


I beleive actually that s-expression are going to come back. Clojure, Arc, R6RS - these are harbingers of the return, I think.


JSON is much more popular than s-expressions, and not just accidentally. Explicit, compact syntax for both lists and key-value pairs is The Right Thing in a language like this.

   {
       "x": [
           {
               "y": "a",
               "z": 23,
               "q": [
                   54,
                   32,
                   45
                ]
            }
        ],
        "r": 43
    }


JSON is a subset of s-expressions. (Yes, s-expressions provide explicit and compact representations for mappings. They also handle other kinds of objects.)

The other difference is that there are JSON parsers and generators for more languages and they're not programmable.


Don't tell me. Show me. Please translate the example into s-expressions.


I'm confused why you don't see this as obvious. (There are several possible ways to represent mappings. I picked one that was close to something that you're happy with.)

{ ("x" ( { ("y" "a") ("z" 23) ("q" ( 54 32 45 )) } )) ("r" 43) }


Clojure uses {} for maps, #{} for sets, and [] for vectors, and vectors are used in function definitions, let statements, etc. This slight decrease in regularity makes a lot of functionality more visible. For example:

SBCL:

(defun f (x y) (let ((z (gethash x :a))) (+ z y))

Clojure

(defn f [x y] (let [z (get x :a)] (+ x y)))

Having syntax for maps is a huge win. Like ML's pattern matching, it's one of those things that changes your coding style entirely for the better, in a way that you wouldn't predict just by looking at the feature.

The only think I miss from CL when I work in Clojure is keyword arguments to functions. There, the Clojure way is a bit worse:

(defun f (x &key y z) (list x y z)) (f 2 :z 3) => (2 nil 3)

(defn f [x {y :y z :z}] (list x y z)) (f 2 {:z 3}) => (2 nil 3)


> (defun f (x y) (let ((z (gethash x :a))) (+ z y))

vs

> (defn f [x y] (let [z (get x :a)] (+ x y)))

The CL defn of f is a function that is called with two arguments. That function is called like "(f a b)" If the Clojure definition is comparable, that is, the call looks like "(f a b)", why are []s used in the definition and the let?

> This slight decrease in regularity makes a lot of functionality more visible.

What functionality? x,y aren't part of a vector and neither is z. (x,y may come from a vector in the caller, but I'll assume that the defn works if they don't, so that shouldn't matter.)


Why can't we keep the indents and drop the parens?


It would make data generation more difficult. When you emit any given data, you'd have to know its level of nesting to get the correct number of indents. Using begin and end tokens (whatever they are) makes that much easier.

(I actually prefer Python's style of using indentation to indicate blocks, but I recognize generating such code is harder than code with tokens.)


You don't have to know the level of nesting; you can add indents afterward just as easily as you can wrap a subexpression in parentheses afterward.

def indent(code): return code.replace('\n', '\n ')


In my current project, I've implemented a source-to-source compiler. In the places where I emit C code, I usually don't have a handle to the scopes above me. I could get one, but it would take more work.

The code I generate has no indents and no newlines. Not having to keep track of these makes life simpler. To make my generated code more legible, I just run indent on it.


I've written C code emitters too. FWIW, I've found nicely-indented output templates help to keep the source code of the emitter clear (and with no need to get at the enclosing scopes). But the question you raised was whether indentation-only was harder to generate, and I'd say no, because code.replace('\n', '\n ') is as simple as '{' + code + '}', if slightly slower.


And my point was that with the transformations I generate, I don't just say '{' + code + '}'. I'm applying transformations to existing code, not generating all of my own code from scratch.

Again, I see no point in making efforts to generate clean looking code when utilities like indent exist.


{} means object [] means array So you would not be able to just drop them, since they mean two different things.


for associative arrays foo: bar, for non-associative foo, bar,

surely this is unambiguous?

    x:
      y: "a",
      z: "23",
      q: 54,
         32,
         45
    ,
    r: 43


YAML?


1.hmm, well, if you try it you'll see that at least in the area of programming languages, after spending some time you'll see that you reinvented s-expressions. 2. can be very interesting to see for example this (sum of every vector-element) in json/yaml...

(defn sum-vec [vec] (let [vec-len (count vec)] (loop [idx 0 acc 0] (if (< idx vec-len) (recur (inc idx) (+ acc (vec idx))) acc))))


I don't want that in my json/yaml.

If I have Javascript then I already have mobile code.

If I'm using json in a situation where I don't have a Javascript interpreter, then I probably don't have a Lisp interpreter around either.


A decent JSON parser is also only a day's worth of work or less in just about any language.

My experience is that it is as little as and possibly less initial development and maintenance as a custom flat-file format or a really robust csv parser.


Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: