News:

Simutrans Wiki Manual
The official on-line manual for Simutrans. Read and contribute.

Haskell (formerly: Languages, got to learn another one)

Started by sdog, October 19, 2012, 11:35:08 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

sdog

I've put a bit of thought into C/C++ programming and decided not to learn it. The disadvantages are just too large. (fiddling with low-level stuff the compiler ought to do, very unsafe, unreadable, memory management!). For all purposes C/C++ would be useful to me, i can use Fortran and rather invest energy in getting better with that [which is in general also quite a bit faster].

What i'd need though is a quick to code language, Perl isn't really doing it. Very nice to code, when i cand do it in one day. No need to comment code or make it readable, since it is in vain it's more efficient to write a completely new script next time i need it (worse is better). But multi dimensional arrays suck badly, all advanced libraries are a pain to use etc. As soon as there's a matrix or numerical integration involved it is not effective.

I've posted below elsewhere, and thought here's quite a lot of experience from people i know. So i'll cross-post it here too.



I'm comparing a couple of languages for my purposes.* Might have a look into one or two of them. This is just a first glance, so feel free to correct me and add aspects.


Advantages
Haskell
pure (functions with no sideffects)
code looks rather nice and readable

Erlang
concurrent (no shared memory)

ATS
roughly as fast as fortran
focus on scientific computing


Drawbacks
*Haskell*
no built-in linear algebra (blas avaiable though)

*Erlang*
no built-in complex numbers
not even simple linear algebra libraries available

*ATS*
new, very small community still
not so much simpler to use


*I've come to realise, i need something besides Fortran and Perl, one is for coding small things too heavy and the other sucks too much with matrices. The last thing i coded in Fortran had two dozen lines for the algorith and 100 lines of overhead, i also spent about five times more time on the whole periphery (especially the awfull in/output).
Collapse this post



(i'm not looking into Python here for psychologica reasons. It's too close to Perl, and i wouldn't learn it. perhaps if i got to something different, then i could come to Python. Which is perhaps one of the most useful language to know at the moment.)



update:  i should like to add that ATP is in ML tradition, and seems in many aspects to be similar to OCaml


Edit:
changed title to Haskell

kierongreen

Haskell gives me serious headaches, and I find the code ugly... I didn't find it useful for doing anything serious (yes I know you can write compilers and many other large projects in it, I obviously just don't get it). I've not looked at the others you've thought about.

If you find C/C++ ugly and unreadable then unfortunately I'm guessing you'd think the same of Java. Other than that Java avoids many of the low level aspects of C/C++, has memory management and is more "safe".

It really depends on what you are doing - if you are making a large application then C/C++ (or to a lesser extent similar languages, Java, C# or whatever Microsoft is up to these days etc.) is really the only way to go I think. It is perfectly safe and reliable, as long as your  programming is...

On a less serious note... ever tried Assembler :p

isidoro

Even less serious: try TeX.  After that, everything would be easy for you...  ;D

sdog

Thanks a lot on the comment on Haskell.

I ought to add, a terminal, taking half my screen, has 68 characters (when at a readable size). :-)

More seriously i've tried java some years ago, but i never managed to remember even the simplest builtin functions. always had a browser instance with google ready on the second screen. Not speaking from experience, the power of Java seems to be mostly in the frameworks available, while the language in itself isn't very elegant. Accordingly it's a favourite of businesses, and the largest part of the learning curve is learning the conventions, workflows and use of frameworks. [expecting of the programmers to know the basics rather well].

That's not my intendended usage, what i'll mostly use it for things i do on my own, and standalone.


tl;dr
i didn't want to say just no, to a very reasonable and helpful suggestion.




@isidoro
i'm already spoiled by LaTeX
only had a few brief looks into actual TeX  [btw   LaTeX + git   the most useful combination since doing so with ink and paper!]

Markohs

  I'd say erlang is the best one from your list. Never programmed in erlang personnally, but a workmate of mine tells me very nice things of that language. The ease to distribute code and use networing is quite built in there. Sound interesting.

But if you want to learn a language that has some professional importance, I'd go personally for javascript (I like this one a lot, it's a very nice language, it has prototyping as a way to implement object-like structures, and clausures, it also considers functions as variables. I personally find it very interesting). the way types are handled it's a bit ugly, through, and array iterators are not nice.

And PHP, ofc.

sdog

#5
Erlang has perhaps the biggest future of the above languages. (If not itself, then by it's concepts copied). I ought to have another look to find out how well it does with very basic linear algebra.



@isidoro
http://en.wikipedia.org/wiki/LuaTeX

(it's features are quite interesting, especially towards OpenType. Perhaps the TeX for the next 20 years?)




update:
As a future referene: Apparently Haskell, Erlang (and OCaml) have nice "Try it in your browser" websites:
http://tryhaskell.org/
http://www.tryerlang.org/
http://try.ocamlpro.com/

Ters

What is the motivation for learning another language? If it is only out of curiosity, there are many options. When it comes to actually getting something done, options become more limited depending on what you want to do. C and languages inspired by it (or at least looks that way, all the way to PHP and JavaScript) are probably used for the vast majority of applications made since the 1990s. In niches, like AI and mathematical applications, other languages rule. Combining multiple languages into a single application is also normal, and allows you to use each language for what it is best at.

At a recent Java developer conference I was at, a panel debate concluded (thought it wasn't really what the debate was about) that the most important thing a developer should learn, is to learn new languages.

Dwachs

@sdog: what kind of problems do you solve with your programming?

Why not using matlab (or its freeware companions) ?
Parsley, sage, rosemary, and maggikraut.

prissi

You could also use squirrel in simutrans scripts ...

isidoro

Quote from: sdog on October 20, 2012, 02:14:39 AM
http://en.wikipedia.org/wiki/LuaTeX

I've tried it and it makes the difference compared to pure TeX.  But it inherits something from its father... ;)  Seriously, consider Lua.  But more seriously, give it a try to Python.  Forget your prejudices.

sdog

Thanks a lot for your replies, it's quite an interesting read.

@isidoro
Lua is rather interesting, and somewhat surprising.

@prissi
first time i heard of squirrel. The name alone would be enough reason to learn it. Nothing beats answering to someone: "I'm fluent in squirrel, but only written."

@Dwachs
at the moment learning some numerical methods, by implementing the algorithms. i'm a bit strange in a way that i sometimes understand things in code better than with pencil and paper. (and i have to say, it's about as readable as Ook)
In general it's some minor tasks like analyzing some data (integrating, some combinatorics, etc), at times i just want to test something.

I tried octave (which is somewhat similar to mathlab) but never got very deep into it
I'm using octave's interactive shell quite frequently as a scientific calculator. Do you think it's worth investing time into it, instead of learning a general purpose language? [cool thing is, octave is on my wive's phone now :-)]

@Ters
It doesn't matter if it is by itself used in possible jobs, what matters there is not the language itself bu the method competence. One can't guess what'll be needed in the future anyways. I doubt i'd go in any area where Java or C are requirements, i'm not a programmer or CS. Quite a lot of what you said directly points to Python. Glue language, very widely used in experimental Physics (most new lab automation is being written in Python now), very widely in other areas too.

I'm a bit reluctant to go too deeply into my professional outlook in the open [only devotees participating, could be moved to the lounge], some adaptability might be required though.



Some kind of intermediate conclusion. In a not too long time-fram i will learn Python. At the moment  i'm rather interested in functional languages and still want to learn one of the more obscure languages above. ATS is out, since it is too new, OCaml is in but not a favourite. (i can't understand OO, especially in a functional language) Haskell and Erlang i'll just try a bit in parallel. See how far i get. They can teach me functional programming [perhaps also changing my approach in imperative languages] and concurency.

Fabio

I recently leant Scheme as a fast way to script gimp. It's a rather interesting language.

I'm also fluent with VBS/VBA, which serves my purposes well enough.

Dwachs

The big advantage of matlab is that it lets you plot data very easily. I use it extensively for numerical computations. I did not try octave/scilab as our department has matlab installed :)
Parsley, sage, rosemary, and maggikraut.

sdog

#13
the first good that came out of it, is i think i got what polymorphism means.

it seems to be the same as one does in fortran with the slightly awkward construction in module interfaces

interface myfunc
  module procedure myfuncA, myfuncB
end interface tostdout
[...]

contains
  function myfuncA(a)
    real, intent(in) :: a
[...]

  function myfuncB(b)
   real, dimension(:), intent(in) :: b
[...]


where myfunc is a function and the others are functions taking an argument of different types.

Less obviously it seems to be polymorphism that builtin real functions are taking single, double and quadruple real values and returning the corresponding type. Without actually requiring the d form (eg cos, dcos, sqrt, dsqrt; where the d-less was the single form in F 77)



The first uncomfortable thing encountered:
Neither Erlang nor Haskell use arrays by default. I was completely  ignorant of lists (thought it's just a fancy name for arrays). Using arrays is possible, but not very convenient.

Ters

That Fortran code looks like what I know as function overloading. I wasn't aware that that is also seen as a kind of polymorphism until I checked Wikipedia. I'm more used to think of polymorphism in terms of object-oriented programming, where a single function accepting a Vehicle, can also be passed a Car, since a Car is a Vehicle. That should also be possible in one of the newer versions of Fortran, but I've never really learned that language well, just helped teaching it.

Just proves that there is always something left to learn.

sdog

#15
That OO example seems to be a special case, with one type being a subset of another.

i've never gave much thought about forming new types. And i do have difficulties to see things like Car or Vehicle as types. (But that's perhaps why i fail with Objects in OO) For all what i did/do the basic types are enough. That's the thing with having very inhomogenous data, also containing nasty things like strings etc.

That's something i've been surprised lately, how much is written about how languages are dealing with strings and such. This is rather surprising me, always thought that would be some niche thing. (eg, what does it matter to me what's in a database

"[...] I've never really learned [Fortran] well, just helped teaching it."
I've learned who to ask when hitting a wall. Please send me your email, social networking, snail mail addresses + phone numbers and emergency phone numbers :-P

ps.: didn't Dijkstra say something along the lines "Fortran destroyes the mind, teaching it must be seen as a criminal offense."




@Fabio: Scheme sounds pretty cool, nothing beats "Baby, wanna see my Lisp" when trying to hit on a girl, [who's into CS]
Guy Steele is also at the beginning of this, i wouldn't talk here if Sun hadn't fumbled Fortess [or rather DARPA weren't too thick]

Ters

Actually, the students I helped with their assignments (which I and another fellow student had selected from a book) generelly just wondered why they were though Fortran in the first place, when they could just use Matlab. I think some of them even knew that that was what was used by the profession they were studying for (some oil and geology related thing, I believe).

isidoro

Fortran 77 is plain garbage.  And Fortran 90 and successors are garbage with potatoes, imho...  :)

I also had to suffer it some time.  Happily, I recovered and now I can hardly remember it...

sdog

#18
Most hate Fortran, for a good reason, four reasons why it still is so widely used:

(1) intrinsic complex functions,
(2) ibraries and old code,
(3) intrinsic matrix multiplication
(4) it's the fastest language for scientific computing.

for reason one 77 is still written, and (pre 77 still used)

From hearsay: Concurrent programming is a pain with it, but much less so than with C.
(gladly our stuff is so embarrasingly parallel, that the PBS takes care of all parallelisation. As a single threaded process for one parameterset my stuff runs through in half a day on a consumer cpu :-)

Markohs


sdog

portable batch system, sorry wasn't thinking when writing. WP: "Portable Batch System (or simply PBS) is the name of computer software that performs job scheduling. Its primary task is to allocate computational tasks, i.e., batch jobs, among the available computing resources."

Markohs


IgorEliezer

Just for heck of it, let me introduce the weird world of AutoLISP:


Full image

Not that I'd want someone to learn it, I'm just sharing my experience. AutoLISP is a dialect of a very ancient language, the LISP, made specifically to develop applications of Computer-Aided Design, you know, the stuff the engineers and architects do. When I'm codding, I feel as if I'm writing down pretty straightforward formulas between parenthesis (that's why LISP is also known as Lost In the Stupid Parenthesis) and the syntax is quite consistent, it's always (function argument1 argument2 argument3 ......argumentN) and I can nest an operation inside the other. So something like:

2.0 x (5.7 + 0.2 + 1.5)
           3.0 - 1.0

is codded:

(/ (* 2.0 (+ 5.7 2.0 1.5)) (- 3.0 1.0))

A variable can accept any kind of value with no need of declaring the type, of course I can't use an 'int' variable in a string function if I don't convert it first (hence the itoa function  ;) ), or it will return error.

I tried to learn Java this weekend, just for fun.... hell, what a such craziness! It made me love my AutoLISP and its barebone IDE even more. Unfortunately I don't have mind anymore to learn new stuff.

Fabio

Lisp, so we're related, as I speak the scheme dialect ;)
It's rather easy to grasp and the nesting is powerful, although the math formulas require a certain degree of mental flexibility as I find them counterintuitive.

sdog

Lisp is cool!
They als pioneered the whole domain specific language concept, no wonder it's used in acad and gimp.


When you already like the functional language, perhaps it's more sensible for you to learn python instead of java?


I like the reverse polish notation.

VS

Python does not have Java's penetration among users, but otherwise works reasonably as multiplatform. I wrote all pak128 scripts on windows, and they "just work" everywhere!

I have my eyes on Erlang, since... forever? I'll never learn it, of course :(

My projects... Tools for messing with Simutrans graphics. Graphic archive - templates and some other stuff for painters. Development logs for most recent information on what is going on. And of course pak128!

sdog

I've got a few hours for this today, and i'm working on understanding recursion (and iteration) in a CS sense.


I rather like the pattern matching instead of conditionals. This seems to have quite an effect on readability. (I just remember the nested conditionals in one of our programs after three levels i'm always lost)

sdog

#27
I've used Haskell a bit now, and i'm very very fond of it.

I was surprised how quickly i got used to immutable state. Reading about it i couldn't understand at all how something could be done at all.* Some aspects of it are very nice and usefull. I've heard of lazy evaluation before, but actually using it was quite straightforward and works quite nicely. Example:

let f a x = [i]some function of a, x[/i]
-- call f once
f a x
-- do so recursively
let xs = iterate ( f  a ) xs

-- not evaulated yet, defines a list xs with all iterated values
-- calling it would now evaluate the "xs =" expression, ad infinitum

take 5 xs  -- evaluates xs for 5 iterations, returns all values
xs!!100    -- evaluate 100 iterations and return the 100th value in the list.


Recursion instead of iteration takes a bit to really sink in. Algorithms can be designed quite differently i think. This needs the most thought. The concept of functional programming itself is much more intuitive than procedural programming (i just got used to the latter first).

There are some good effects on the way i'm programming in overall, the type system is quite advanced and the major difficulty when learning. It is required to think about the type and it's operations when defining a function. This helps also to be more aware of spaces in general (not being sloppy and not just taking all operators one needs for granted).

In effect Haskell completely replaced octave (Mathlab) for me. I'll use perl only for regular expressions. And it will be even more of a pain to look at Fortran.

What i haven't done yet:
A standalone, compiled programm. So far i used only the interactive shell.
Monads. (thus no IO)

Here is a very good explanation of Monads: The first time i found the concept explained in easy to understand terms.
http://cdsmith.wordpress.com/2012/04/18/why-do-monads-matter/


*it is also not completely immutable, since something can be assigned to it in the first place, with the "let" statement.



Just read it allows literate programming in a very nice way, by compiling code in a latex file. That really is a brilliant thing!

IgorEliezer

Quote from: sdog on November 04, 2012, 04:28:28 PM
When you already like the functional language, perhaps it's more sensible for you to learn python instead of java?
I got myself messing around with Python. Blender and some other tools use Python as scripting or whatever.

Any idea of IDE? Typing in the DOS-command is no fun. D:

Quote from: sdog on November 04, 2012, 04:28:28 PMI like the reverse polish notation.
Oh Nice to meet you. I mean, I've never heard of polish notation before. 8)

Fabio

You can use a nice text editor (like NotePad++), save as .py and run from command line.
Modern text editors have a nice multi language (as in programming language) markup.

I even wrote a NotePad++ language markup for Makeobj dat files.

Ters

There's also a simple IDE bundled with the Python install for Windows. I haven't used it, though.

IgorEliezer

Quote from: Fabio on December 23, 2012, 02:01:17 PM
You can use a nice text editor (like NotePad++), save as .py and run from command line.
Yea I did.

# MAH VEREE FURST PAHYTHUN CODEH: FEAR MEE!

print ('*** This is the very first program on Python made by IgorEliezer. Tee-hee!')
print ('2012/12/24\n')

x = int(input("Please enter a non-negative integer value: ")) # get user input and covert it into integer

if x < 0: # checks if it's negative
    x = 0 # change it to zero
    print ('Value = ', x, '. You entered a negative value, silly! Value changed to zero...\n') # prompt user
elif x == 0: # zero
    print ('Value = ', x, ". It's a zero.\n") # prompt user
elif x == 1: # one
    print ('Value = ', x, ". It's a one.\n") # prompt user
else: # bigger than one
    print ("OMG! It's more than one! Get in the car!\n") # prompt user
   
input("Hit ENTER to leave this lame program: ") # this or the program won't let user see what he did.

Well, at least nobody will complain I'm not striving. :D

sdog

I commit the crime of thread necromancy to follow up a couple of years on the following:

Quote from: sdog on October 19, 2012, 11:35:08 PM
I've put a bit of thought into C/C++ programming and decided not to learn it. The disadvantages are just too large. (fiddling with low-level stuff the compiler ought to do, very unsafe, unreadable, memory management!). For all purposes C/C++ would be useful to me, i can use Fortran and rather invest energy in getting better with that [which is in general also quite a bit faster].

This really came back to bite me in the ****.

While I find these points much more relevant than before – I've learned quite a bit in the meantime – not being proficient with C is a drawback looking for jobs. (I've recently finished my PhD in theoretical physics, and since I'm not good enough at it for a career as perpetual post-doc, I am looking for one.)

I've come to a couple of job postings where the company and location is agreeable*, that do not mention Java, C#, or Windows (wouldn't touch any with a 3 m pole). Even when I tick all but one of the requirements, but that one requirement is "programming experience (C/C++)". In other words, need not apply.

It is to be seen if this indeed bites me in the ****, perhaps I can find a job where I can do something interesting enough that there is no need work-life balance, where I can use an intersting but not hackish language, and don't have to leave civilisation. I do have some doubts though.

*there are interesting jobs in godawful places, eg a town with 5k pop in the middle of the 'Schwarzwald', or a Bavarian village where one has to ride the bus for two or three hours to get to the next supermarket! For one of these I found job offers from five hr-consultants.

ps: Isaac, you added a UK-English list to the profanity filter!?  Disclaimer, I should never use asterisks to obfuscate the name of parts of my body or my profanity.

jamespetts

It's never too late to start learning C++ and helping to add some features to Experimental...

Edit: Incidentally, it is interesting that C/C++ is still very much in demand; I thought that statistics had shown that far fewer projects were written in it now than even 10 years ago. Best wishes in the job search, incidentally!
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Ters

Quote from: sdog on October 29, 2016, 08:35:55 PM
I've come to a couple of job postings where the company and location is agreeable*, that do not mention Java, C#, or Windows (wouldn't touch any with a 3 m pole). Even when I tick all but one of the requirements, but that one requirement is "programming experience (C/C++)". In other words, need not apply.

Then I am baffled as to what kind of programming job you are looking for. The only major kinds that remain are web programming, using either JavaScript or Flash.

Apart from that, there are some jobs that involve a bit of programming, but are primarily scientific in nature, but I know little about them. Apparently those looking for petroleum are expected to know Fortran, since I, as I wrote earlier, was an assistant to their teacher at university. And at least some of the geodesists at work program a bit, possibly also in Fortran. The latter in pretty niche to begin with. Most haven't even heard of the discipline, but their fascination for certain phenomena at the edge of the known universe is apparently very important for modern life.

sdog

Numerical simulation, physics modelling.

I'm very happy with Fortran, regardless of its bad reputation it is a decent language (past 95). My only gripe with it is how awkward it is to write and call functions. My only gripe with it is that they went OOP instead of functional when they extended from a purely imperative paradigm.

Ters

Quote from: sdog on October 30, 2016, 12:11:26 PM
Numerical simulation, physics modelling.

And someone is doing that in Java? Lunatics. C# might be somewhat better, but I have no serious experience with that. C++ strength in that field is perhaps that it both lets you create and work with some higher level abstraction, but also get down to the bare metal if needed (C doesn't do the abstractions as well). My only brush with number crunching was with C/C++ and OpenMP, but I'm sure there are other languages. However, with programming, it is not as important what languages you do know, as which languages you can know. The underlying principles are generally the same. There might be more differences in how to program effectively on different architectures, than how to program in different languages.

sdog

There were indeed done job adds that mentioned Java. These are not necessarily full time developers but more general engineering. A lot is also not that computational intensive.

Often job adds did not seem entirely consistent. I wonder if they can get anyone on earth that fulfils all necessary requirements.

I am confident that I wouldn't have much difficulties to learn C/C++. It's not unfamiliar to me. But I do not have experience worth to mention with it. What is more friends who do such jobs teacher care of the physics, the algorithms, parallelization, and let proper CS majors do the hackish stuff.

jamespetts

Does anyone program anything significant in D these days?
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Ters

Quote from: sdog on October 30, 2016, 12:51:26 PM
Often job adds did not seem entirely consistent. I wonder if they can get anyone on earth that fulfils all necessary requirements.

That is apparently common. These days, they probably ask for three year experience with Windows 10.

prissi

In Germany there is a lot demand (i.e. best pay) for real programmers, which means embedded C code for industrial applications. According to c't the highest paid IT professionals (after consulting ... ) the programmers for embedded devices, which were about 61 k€/year (was already one or two years ago). The lowest paid (apparently because everybody can do this) was web-programmer/layouter with (41 k€ about).

Even though object oriented programming is nice, in the end a lot of stuff in industry either uses ancient libraries (which are optimised for C) or every cent counts. A fried of mine supervises car multimedia programming for several high end German manufacturer, and then have to use hardware which will be still available for another 10 years and be as cheap as possible. That often means using ancient architectures or quite underpowered chips by todays standard.

Given that apparently many theoretic physics end up in the finacial "industry", where information is transferred via the www an application using a Java surrounding and just a number crunching core (which could be C or Fortran or anything decent performant) makes some sense.

Recently I had an interview for a Professorship in Switzerland (I consider myself also doing physics, but rather very applied). I always mention Simutrans in my applications, but at that time there was also an informatics professor in the commission and questions me about my involvement. I was quite surprise (never happened to me before on the three other occasions which also had someone from informatics in the commission). So while you were not deeply involved with programming, working and helping with Simutrans and its community might be still something you may want to add to your CV.

sdog

To add to what prissi said, such jobs can be quite attractive, since one has to deal with actual physical systems (eg cars, machinery) not just an abstract concept. The more big-corporate it gets, the more likely they ask for Java experience (for example SAP). When it comes to measurement and instrumentation there is a fair deal of python requested.*

I've missed an opportunity to apply to a job posting by a company at the very top of my wish-list as a python developer with completed studies in Physics, Maths, or CS (in that order, for the former two cases completed means PhD).


Unfortunately I never contributed to Simutrans. Lengthy effusions to discussion threads are not contributions. However, I did gain much from this community. While I have not played Simutrans in years (I cannot stop myself playing when I start it.) I still come back to this forum for the (i) company and (ii) learning.

(i) This is the most pleasant community I have seen on the net. As a metric to determine this I consider if there is anyone of the individuals I know I would rather not to visit and stay at my flat. Yet there is no one. To the contrary, I should be delighted to meet anyone.

(ii) I often learned interesting aspects from following dev discussions. Coming back to the topic, i've learnt more about C++, its memory management, library idiosyncrasies here than in any other context. What is more, over the years James' writing style has quite thoroughly influenced my own. He is so to say an involuntary English as a second language teacher.

prissi, all the best in those attempts to attain a professorship. Looking at the workload you manage in Simutrans beside your actual research and family obligations, I think it is a proof you can handle professorship with the back-breaking workload it comes with. It makes more than sense to mention it, besides being lead dev, it also shows that you have time you can make free by neglecting it.

IgorEliezer

#42
Quote from: sdog on October 29, 2016, 08:35:55 PM
I commit the crime of thread necromancy to follow up a couple of years (...)

This really came back to bite me in the ****. (...)

It is to be seen if this indeed bites me in the ****. (...)
What the hell have you just summoned? A zombie?

See? That's what you get with thread necromancy, specially in October.

prissi

Actually I will start a professorship in Nagoya, Japan next January (some of the reasons I am have less and less time for Simutrans at the moment). So for me things have played out in the end, even if it was rather by accident.

Certainly life's way are rather convoluted. In another life I may have ended an embedded programmer like my friend, or maybe even as a SciFi writer. Just being open and curious does help (imho) at lot to cope with whatever life will throw at you; and a PhD in physics proves somehow that you are curious.

sdog

Congratulations prissi! This is fantastic news. [rm, too pers. for a pub. channel] It might seem unfortunate for Simutrans, but there is always a time where one has to grow up and leave the family home. This might apply for the Simutrans project as well.

I'm fine with all that comes. I've come to terms that I don't have the bite for a successful postdoc.* I am somewhat too disperse in my curiosity, which is indeed my most defining character trait. Some friends have, so they say, marvellous tasks in the industry. I have a couple of interesting things in mind. (Have to find out how to make a response to an application very likely.) What makes me enthusiastic in these jobs are that they require not only physics but are quite interdisciplinary and require physics.

*Having been able to contribute to research, and what is more, having made friends with other researchers, is so rewarding that even if everything that comes after were a complete disappointment, balanced at the very end it would be a life worth lived.

jamespetts

It is interesting that, as of January, Prissi will have lived and worked in the three countries in which Simutrans is most popular.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Isaac Eiland-Hall

Quote from: jamespetts on October 31, 2016, 01:29:30 PM
It is interesting that, as of January, Prissi will have lived and worked in the three countries in which Simutrans is most popular.

Coincidence? Or conspiracy?

....well, coincidence, obviously, of course. :)

Combuijs

Quote from: prissi on October 30, 2016, 11:04:57 PM
Actually I will start a professorship in Nagoya, Japan next January  proves somehow that you are curious.

Congratulations, prissi, I hope it will work out for you and your family!
Bob Marley: No woman, no cry

Programmer: No user, no bugs



el_slapper

Quote from: sdog on October 30, 2016, 12:51:26 PM(.../...)Often job adds did not seem entirely consistent. I wonder if they can get anyone on earth that fulfils all necessary requirements.(.../...)

Often? Always you mean. As soon as the position is a little bit beyond the standard, demands are unrealistic. 3 years of XP with AngularJS2(out this year), expert in 15 other programming languages in all paradigms, masters all the automated test suites of the market, loves doing manual tests as well, is god in system(Windows AND Unix), is expert in the functional domain, and will be paid with peanuts.

That's the standard job ad, those days, in France, and probably everywhere else in the world. Of course, they hire who they find that more or less fits. I had no experience in systems, neither in the medical industry, when I was hired where I am now. It would have helped me, though..... but other candidates(all 25 of them) were even further from the ad.

Ah, and congrats for you, Prissi. Have fun over there.

sdog

Quote from: el_slapper on November 02, 2016, 12:04:31 PM
Often? Always you mean. As soon as the position is a little bit beyond the standard, demands are unrealistic. 3 years of XP with AngularJS2(out this year), expert in 15 other programming languages in all paradigms, masters all the automated test suites of the market, loves doing manual tests as well, is god in system(Windows AND Unix), is expert in the functional domain, and will be paid with peanuts.
I've not seen something as extreme as that. Also not contradictory constraints. However, such that would restrict the number of people to a very small number indeed.


Another type of job adds is the hilarious one. In one case they had ten bullet points, emphasising that one can do excellent shopping nearby (centre of Cologne), that they have 'kicker' (aka 'foosball') matches and irrelevant stuff like that. Requirements: anyone who knows a bit of programming and has graduated from computer or natural sciences, or engineering. Not a single word about what they were doing. I wonder who they expect to get with such an add?

Quote
That's the standard job ad, those days, in France, and probably everywhere else in the world. Of course, they hire who they find that more or less fits. I had no experience in systems, neither in the medical industry, when I was hired where I am now. It would have helped me, though..... but other candidates(all 25 of them) were even further from the ad.

I've not considered applying when I did not meet the necessary constraints. It is interesting that you did so, and were accepted. How did you do that? Mention in the cover letter: "Although I do not fulfil the necessary requirement <fill in the blank> I can compensate this thorugh my experience with something very similar?"

If I were writing requirements, and i would get an offer by someone who would not fit, I would be a bit cross. After all they were wasting their and my time for a certain refusal. However, I should make sure that the requirements are indeed necessary. (I mean, it cannot be so difficult to differ between 'must haves' and 'nice to haves'?)

An_dz

Quote from: sdog on November 02, 2016, 03:02:39 PM
I've not considered applying when I did not meet the necessary constraints. It is interesting that you did so, and were accepted. How did you do that? Mention in the cover letter: "Although I do not fulfil the necessary requirement <fill in the blank> I can compensate this thorugh my experience with something very similar?"

If I were writing requirements, and i would get an offer by someone who would not fit, I would be a bit cross. After all they were wasting their and my time for a certain refusal. However, I should make sure that the requirements are indeed necessary. (I mean, it cannot be so difficult to differ between 'must haves' and 'nice to haves'?)
You just need to apply to some of the requirements, not all. It works the same in Brazil, I've seen job ads requiring decades of experience in hundreds of areas while you should also be a recently graduated person and less than 30 years old. They will just choose the one that is closer.

I've even seen inconsistent ads, like one saying "First job" and then one of the requirements was "5 years experience". Or another saying "Looking for newly graduated students" and one of the requirements "Master's degree".

As I see it's like they removed the "optionals" part and made them all requirements. It's an HR thing, don't try to find logic on that.

Ters

And I doubt they will consider you crazy for applying without meeting all requirements, because quite a lot of those that apply for a job where I work don't meet any of the requirements. They don't have a chance, though. I don't remember what they were looking for when I applied for and got my current job, but I remember that during the interview, when asked if I had experience with something, I could at best answer that I had done a single assignment during my studies. In essence, the only thing that qualified me was that I knew a bit of Java and had gotten through five years of college/university. Being a bit outside the big city, nor among the highest paying employers in the country for my line of work, they might have been able to pick from the top shelf and I had been turned down by several others before (including other jobs that have the same relatively low wages), but they certainly don't appear to have regretted it. Everyone, even the expensive, experienced consultant developers we hire in "to get us through", need some tutoring before they can be productive. Being part of the government might mean that the pressure competition puts on private companies is less, though.

One thing is certain: if you don't apply, you will not get the job. Not that I recommend applying for work you don't feel comfortable with, unless you get desperate. At worst, you get called in for a pointless interview, but even that is a sign that they thought you were a promising candidate (unless they have a very odd selection process).

IgorEliezer

Quote from: Ters on November 02, 2016, 05:05:29 PM
At worst, you get called in for a pointless interview, but even that is a sign that they thought you were a promising candidate (unless they have a very odd selection process).
Relevant:


sdog

Quote from: IgorEliezer on November 02, 2016, 05:33:04 PM
Relevant:
[silly job interview video]
I can relate to this even more today. I've just been baffled looking at a German online job application questionnaire. They ask unashamedly for:

Gender, birthday and nationality!

With this I can only wonder if on the next page they ask for sexual orientation, political bias, and an effin [redacted].

A minor nuisance in comparison is that on top of that they expect to the applicant to come forward and propose monthly pay (ie. kneecapping themselves) It's not just that I've no idea if i can expect 2k or 5k a month (neither do I care if work is good), but it is them who put up the offer.


edited, since it was too drastic.

prissi

German CV requires also a photo.

And they ask for sex, birthday and nationality. Gender or sexual orientation does not matter. Honestly, at the interview the HR will know who turns up anyway. (I was baffled because the britons ask for nationality and race, with an option to decline to say, but still ... )

And even if you not give your birthday, the dates on your diploma/certificates are as telling. And nationality is a serious issue, as some positions (for instance on certain EU programs) are not allowed to filled with applicants from the home country. Or, in the UK, it might be next to impossible to get a working Visa for them.

And with a PhD, you are applying for a position that needs independent thinking. So you should know how much you work is worth. Do not be afraid to ask for something with 4000-5000€ a month (if the work is requiring a PhD related level though). They will very unlikely decline and will say this is unrealistic.

You know, you want them to hire you. It is their game (and while different in akademia and industry, and country) you have to play be their rules.

Ters

(This is much the same as prissi wrote. I just started writing this before he posted.)

I don't remember being asked what I expected/demanded to be paid in the application. That only came up during the interviews. The issue has to be settled at some point, so they might as well get it over with, I guess. I had no idea what to ask for myself, I was just happy to get started.

As for asking for nationality, that is actually important for some jobs, including my own. People of some nationalities can probably just forget about getting the required security clearance. As for gender and birth date, that might have been part of the standardized form used by a popular web recruitment software. I think I wrote both of them in the CV anyway, and possibly the application letter as well. Half the places I contacted would have been able to find out if they cared (hence the security clearance thing), my name is not at all ambiguous, and my history of education gives a good indication of my age anyway. Discrimination is also apparently based primarily on name in Norway. It doesn't matter if you've been born and raised in Norway, and got top grades from relevant Norwegian schools. If your name doesn't seem Norwegian, you go to the bottom of the pile, or at least far enough down to not get called in for an interview. There are stories of people getting jobs immediately after changing their names. Even if their looks still revealed their ethnicity at the interview, their personality overcame prejudice once they only got the opportunity to meet face-to-face.

sdog

I've seen in several forms that they asked whether one is allowed to work without any need for a permit. This is relevant information for an employer.

I've grown up in Germany and learned all that stuff. However, for crying out loud the anti discrimination laws have been passed 10 years ago! Yet nearly nothing has changed? (Well, at closer inspection the birthdate at least, it isn't marked with '* required'.)

In the end I am going to play by their rules. However, I'm going to feel dirty by risking positive discrimination. There are some things I shan't do for now, including birthdates and photos, since they cannot request it. I doubt that I would like to work for an employer who wouldn't take me for such reasons.

I've done quite a lot of job search and applications for family in Canada. Such things were handled quite a bit differently. While the discrimination stuff was done properly.* One advice in particular was to consider employers who asked for a salary request unprofessional (to say the least). With this there is no room for negotiations.

*They are not allowed to ask, applications that come with, eg, a photo have to be disregarded.)


ps.: I'm sorry for starting to rant here, and in particular as it is so off topic. But this was just too much, one more thing that made me wonder why on earth did I come back. Family went for holidays home in China and I needed any vent. Thanks for your reasonable feedback.



Quote from: Ters on November 03, 2016, 09:41:50 PM
Discrimination is also apparently based primarily on name in Norway. It doesn't matter if you've been born and raised in Norway, and got top grades from relevant Norwegian schools. If your name doesn't seem Norwegian, you go to the bottom of the pile, or at least far enough down to not get called in for an interview. There are stories of people getting jobs immediately after changing their names. Even if their looks still revealed their ethnicity at the interview, their personality overcame prejudice once they only got the opportunity to meet face-to-face.

That appears to be the case throughout Europe. They were talking about moving application processes to an European standard for anonymous applications even before I left. But except for a couple of test cases nothing whatsoever happened.




@admins, mods
It just occured to me that this is in the open radomness lounge, not the devotee one. Some things might be perhaps better kept at that former place. In particular since I led this thread so astray. Good break points might be reply #32 (my necromancy), after #42, or #53 (where i started to rant only). As far as I can see only devotees participated. If you agree with a move, would you please do so?

Ters

I don't think it's possible for someone to derail their own topic in the randomness lounge. The only purpose of moving it to the devotee lounge would be to keep things secret to the general public.

Quote from: sdog on November 03, 2016, 09:49:29 PM
Well, at closer inspection the birthdate at least, it isn't marked with '* required'.

I wonder if that is even worse. An optional field adds an extra piece of information. How will they interpret someone's unwillingness to state their birthday?

el_slapper

Sorry for the late answer, had missed that one.

Quote from: sdog on November 02, 2016, 03:02:39 PM
I've not seen something as extreme as that. Also not contradictory constraints. However, such that would restrict the number of people to a very small number indeed.

It's more a wishlist for the perfect candidate. All those skills are useful in my current job, so the list was no idiot. They just know in advance that noone will fit all bullet points. And I'm still rather weak in LINUX system. I made progress in knowledge of the medical industry.

That being said, yes, the position is extremely broad - programming, test scripting, manual testing, system. Most other candidates had only 1 or 2 of them, I did have 3.

Quote from: sdog on November 02, 2016, 03:02:39 PMAnother type of job adds is the hilarious one. In one case they had ten bullet points, emphasising that one can do excellent shopping nearby (centre of Cologne), that they have 'kicker' (aka 'foosball') matches and irrelevant stuff like that. Requirements: anyone who knows a bit of programming and has graduated from computer or natural sciences, or engineering. Not a single word about what they were doing. I wonder who they expect to get with such an add?

I was once contacted by a head hunter for a similar job in Berlin, and the main points were "there is a billiard" and "we will teach you the basics of German"(I'm good in German, no more fluent as I once was, but lessons for beginners would be a pure waste of time for me).

Quote from: sdog on November 02, 2016, 03:02:39 PMI've not considered applying when I did not meet the necessary constraints. It is interesting that you did so, and were accepted. How did you do that? Mention in the cover letter: "Although I do not fulfil the necessary requirement <fill in the blank> I can compensate this thorugh my experience with something very similar?"

Well, I also knew personally my future boss - which helps making a proper answer a lot, even if the final decision was not his own, but the big boss's - but even without it, when I was a consultant, I often filled less than half of the bullet points when I won the mission. Only once out of 13 missions, I was "perfect". All 12 others, I had holes.

Quote from: sdog on November 02, 2016, 03:02:39 PMIf I were writing requirements, and i would get an offer by someone who would not fit, I would be a bit cross. After all they were wasting their and my time for a certain refusal. However, I should make sure that the requirements are indeed necessary. (I mean, it cannot be so difficult to differ between 'must haves' and 'nice to haves'?)

Usually, noone on the market has all the "must have", and you learn them on the fly. I've got regular trainings on the parts I'm weak.

IgorEliezer

#59
Just got my aha moment with AutoLISP.

In 2011 (or 2009), I needed to create a function to find the n-position of an item in a list, something like find "c" in ("a" "b" "c" "d" "e" "f") and return 2, false if item does not belong. That's the monstrosity I coded back then:


(defun position    (elem lst / elem_check pos pos_found)

  ;; check if the element is member of the list
  (if (not (member elem lst))
    nil                    ; returns 'nil' if not member

    ;; proceed if member
    (progn
      (setq pos    0            ; set position to zero
        pos_found nil
      ) ;_ setq

      ;; check the list
      (while (and
           (setq elem_check (nth pos lst)) ; pick an element
           (null pos_found)        ; ... and check if position is not found
         ) ;_ and

        ;; check the element
        (if (/= elem_check elem)    ; if not found
          (setq pos (1+ pos))        ; then: go ahead to test the next one
          (setq pos_found pos)        ; else: found! record the position to stop the (while)
        ) ;_ if
      ) ;_ while

      pos_found                ; returns <pos> if member
    ) ;_ progn
  ) ;_ if
) ;_ defun


1st, I used to comment every fudging line. 2nd, it's huge and ugly.

Today a happy accident made me remind of that over 6-year-old code, that I should go "backwards" and rewrite it:


(defun position    (elem lst / rest)
  (if
    (setq rest (member elem (reverse lst)))
    (1- (length rest))
    nil
  )
)


Deus ex machina.

yorkeiser

As a former programmer in many languages (c, java, c# and some others) i've to say: brrrrrr, lisp syntax is horrible