Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-

Ruby or FIOC?

Name: Anonymous 2013-02-22 4:30

Is there even a difference?

Name: Anonymous 2013-02-22 4:32

i was told that ruby is more cute but i still don't want to learn it -_-

Name: Anonymous 2013-02-22 4:33

Ruby is the new perl.

FIOC is the new Java.

Name: Anonymous 2013-02-22 4:40

Common Lisp. It is the only way to go. There are lots of tools to begin with:
http://cliki.net/

For λ

Name: Anonymous 2013-02-22 10:35

javascript

Name: Anonymous 2013-02-22 10:43

>>2
but i don't want to be a weeaboo

>>3
you are the new nigger

>>4
but i want a job

>>5
but i'm not a stinking jew

Name: Anonymous 2013-02-22 11:01

Yes, one is slow and the other is fucking slow as fuck

Name: Anonymous 2013-02-22 11:03

fag

Name: Anonymous 2013-02-22 11:17

>>6
but i want a job
Forget about it, you will never get one. Enjoy yourself, avoid enterprise cruft and paradigms, put the fun back into computing etc.
Picture yourself as a young retired man. You've got all the necessary time to learn anything. You will still be able to use your wonderful programs in 20 years if you avoid Python, Ruby, Java and all these born-dead crap.
You'll be programming for yourself, nobody is willing to pay you, so you have no reason to make it a torture.

Name: Anonymous 2013-02-22 11:23

>>9
thank you for your encouraging words, oh wise wizard of satori

Name: Anonymous 2013-02-22 16:46

>>10,6,1
Not only what >>9 said, but you are welcome to make your firm and freelance with it. Lots of people were successful using a lisp. Viaweb and itasoftware.com did. All these people did:
http://www.paulgraham.com/people.html

Why should torture yourself with ENTERPRISE QUALITY products, when you can (defun life("in Lisp"))?

Name: Anonymous 2013-02-22 17:30

I am far from an expert at Python, but I have done a couple of semi-serious projects in the language and will try to recall specifically what I didn't like.

 - Everything you write will be open source. No FASLs, DLLs or EXEs. Developer may want to have control over the level of access to prevent exposure of internal implementation, as it may contain proprietary code or because strict interface/implementation decomposition is required. Python third-party library licensing is overly complex. Licenses like MIT allow you to create derived works as long as you maintain attrubution; GNU GPL, or other 'viral' licenses don't allow derived works without inheriting the same license. To inherit the benefits of an open source culture you also inherit the complexities of the licensing hell.
 - Installation mentality, Python has inherited the idea that libraries should be installed, so it infact is designed to work inside unix package management, which basically contains a fair amount of baggage (library version issues) and reduced portability. Of course it must be possible to package libraries with your application, but its not conventional and can be hard to deploy as a desktop app due to cross platform issues, language version, etc. Open Source projects generally don't care about Windows, most open source developers use Linux because "Windows sucks".
 - Probably the biggest practical problem with Python is that there's no well-defined API that doesn't change. This make life easier for Guido and tough on everybody else. That's the real cause of Python's "version hell".
 - Global Interpreter Lock (GIL) is a significant barrier to concurrency. Due to signaling with a CPU-bound thread, it can cause a slowdown even on single processor. Reason for employing GIL in Python is to easy the integration of C/C++ libraries. Additionally, CPython interpreter code is not thread-safe, so the only way other threads can do useful work is if they are in some C/C++ routine, which must be thread-safe.
 - Python (like most other scripting languages) does not require variables to be declared, as (let (x 123) ...) in Lisp or int x = 123 in C/C++. This means that Python can't even detect a trivial typo - it will produce a program, which will continue working for hours until it reaches the typo - THEN go boom and you lost all unsaved data. Local and global scopes are unintuitive. Having variables leak after a for-loop can definitely be confusing. Worse, binding of loop indices can be very confusing; e.g. "for a in list: result.append(lambda: fcn(a))" probably won't do what you think it would. Why nonlocal/global/auto-local scope nonsense?
 - Python has a faulty package system. Type time.sleep=4 instead of time.sleep(4) and you just destroyed the system-wide sleep function with a trivial typo. Now consider accidentally assigning some method to time.sleep, and you won't even get a runtime error - just very hard to trace behavior. And sleep is only one example, it's just as easy to override ANYTHING.
 - Crippled support for functional programming. Python's lambda is limited to a single expression and doesn't allow conditionals. Python makes a distinction between expressions and statements, and does not automatically return the last expressions, thus crippling lambdas even more. Assignments are not expressions. Most useful high-order functions were deprecated in Python 3.0 and have to be imported from functools. No continuations or even tail call optimization: "I don't like reading code that was written by someone trying to use tail recursion." --Guido
 - Python's syntax, based on SETL language and mathematical Set Theory, is non-uniform, hard to understand and parse, compared to simpler languages, like Lisp, Smalltalk, Nial and Factor. Instead of usual "fold" and "map" functions, Python uses "set comprehension" syntax, which has overhelmingly large collection of underlying linguistic and notational conventions, each with it's own variable binding semantics. This, in effect, makes Python look like an overengineered toy for math geeks. Good luck discerning [f(z) for y in x for z in gen(y) if pred(z)] from [f(z) if pred(z) for z in gen(y) for y in x]. In addition, you will enjoy cryptic expressions like z(*z(*m.i())[::-1]).
 - Forced Indentation of Code (aka "off-side" rule) impedes using CLI, automatically generating Python code and moving around large code blocks. Editing Python code requires special editors (forget about Word/Notepad), that expand tabs into spaces, while sharing code through a web post or email will most likely break indentation. Absence of block-terminator is so utterly confusing, that you'll find yourself ending blocks with #endif anyway. It's painful to deal with other things that need indenting, such as large SQL queries, or HTML when you're using things like mod_python.
 - Python hides logical connectives in a pile of other symbols: try seeing "and" in  "if y > 0 or new_width > width and new_height > height or x < 0".
 - Python indulges messy horizontal code (> 80 chars per line), where in Lisp one would use "let" to break computaion into manageable pieces. Get used to stuff like self.convertId([(name, uidutil.getId(obj)) for name, obj in container.items() if IContainer.isInstance(obj)])
 - Quite quirky: triple-quoted strings seem like a syntax-decision from a David Lynch movie, and double-underscores, like __init__, seem appropriate in C, but not in a language that provides list comprehensions. There are better ways to mark certain features as internal or special than just calling it __feature__. self everywhere can make you feel like OO was bolted on, even though it wasn't.
 - Python has too many confusing non-orthogonal features: references can't be used as hash keys; expressions in default arguments are calculated when the function is defined, not when it’s called. Why have both dictionaries and objects? Why have both types and duck-typing? Why is there ":" in the syntax if it almost always has a newline after it? The Python language reference devotes a whole sub-chapter to "Emulating container types", "Emulating callable Objects", "Emulating numeric types", "Emulating sequences" etc. -- only because arrays, sequences etc. are "special" in Python. Subtle data types (list and tuple, bytes and bytearray) will make you wonder "Do I need the mutable type here?", while Clojure and Haskell manage to do with only immutable data.
 - Python's GC uses naive reference counting, which is slow and doesn't handle circular references, meaning you have to expect subtle memory leaks and can't easily use arbitrary graphs as your data. In effect Python complicates even simple tasks, like keeping directory tree with symlinks.
 - Patterns and anti-patterns are signs of deficiencies inherent in the language.  In Python, concatenating strings in a loop is considered an anti-pattern merely because the popular implementation is incapable of producing good code in such a case. The intractability or impossibility of static analysis in Python makes such optimizations difficult or impossible.
 - Problems with arithmetic: no Numerical Tower (nor even rational/complex numbers), meaning 1/2 would produce 0, instead of 0.5, leading to subtle and dangerous errors.
 - Poor UTF support and unicode string handling is somewhat awkward.
 - No outstanding feature, that makes the language, like the brevity of APL or macros of Lisp. Python doesn’t really give us anything that wasn’t there long ago in Lisp and Smalltalk.

Name: Anonymous 2013-02-22 17:30

Here's why one should be wise regarding Ruby:
 - Ruby indulges obfuscation: Ruby has no keyword/optional arguments, so you'll have to use hash parameters as a substitute. This is an idiom that comes from Perl. Ugly, Perl-looking code, like proc {|obj, *args| obj.send(self, *args)} or (0..127).each { |n| p n.chr }, considered beautiful. Another confusing Perl borrowing are postfix `if` and `while` (line = file.readline while line != "needle" if valid line) and quirky variable names (partially due to naive environment design): @instance_var, @@class_var, CONSTANT_VAR, $global_var, :sym, &proc, $~[1], $!, $>, $@, $&, $+, $0, $~, $’, $`, $:, $., $* and $?. If A is [1,2,3] and B is [10,20,30], then A+B is [1,2,3,10,20,30], when you probably wanted [11,22,33]. If `a` and `b` are undefined, then "a = b" produces error, but "a = a" gives `nil`.
 - Faulty syntax. Ruby cant distinguishing a method call from an operator: "a +b" can be both "a(+b)" and "a + b" - remove the space to the left of "+" or add a space to the right of "+", and it will be parsed as an addition. Same with "puts s *10", which is parsed as puts(s(*10)). Ruby's expressions terminate by a newline and you have to implicitly state that the expression is not over, using trailing + or \. That makes it easy to make a dumb syntactic mistake by forgeting to continue line. It also encourages putting everything onto a single line, producing messy looking code. A good amount of your code will consist of "begin end begin begin end end..." noise.
 - Slow: JIT-compiling implementations exist, but they're still slow and incomplete, due to Ruby's complexity and bad design, which make Ruby difficult to optimize compared to other dynamic languages, like Lisp. For example, Ruby has to accomodate for somebody in another thread changing the definition of a class spontaneously, forcing compiler to be very conservative. Compiler hints, like `int X` from C/C++ or `declare (int X)` from Lisp, arent possible either.
 - Ruby's GC is a naive mark-and-sweep implementation, which stores the mark bit directly inside objects, a GC cycle will thus result in all objects being written to, making their memory pages `dirty` and Ruby's speed proportional to the number of allocated objects. Ruby simply was not designed to support hundred thousand objects allocation per second. Unfortunately, that’s exactly what frameworks like Ruby on Rails do. The more objects you allocate, the more time you "lose" at code execution. For instance something as simple as 100.times{ ‘foo’ } allocates 100 string objects, because strings are mutable and therefore each version requires its own copy. A simple Ruby on Rails 'hello world' already uses around 332000 objects.
 - OOP: Matz had a bit too much of the "OOP is the light and the way" philosophy in him, in effect Ruby doesn't have stand-alone functions and Ruby's blocks can't be used in exactly the same way as usual closures. Even high-order functions are attached to objects and produce verbose code: "names.map { |name| name.upcase }", instead of simple "map upcase names".
 - Ruby (like most other scripting languages) does not require variables to be declared, as (let (x 123) ...) in Lisp or int x = 123 in C/C++. If you want a variable private to a block, you need to pick an unique variable name, holding the entire symbol table in your head. Ruby  introduces new variables by just parsing their assignements, meaning "a = 1 if false; a" wont raise an error. All that means Ruby can't detect even a trivial typo - it will produce a program, which will continue working for hours until it reaches the typo. Local and global scopes are unintuitive. Certain operations (like regular expression operator) create implicit local variables for even more confusion.
 - "def method_missing(*args)" is a blackhole, it makes language semantic overly cryptic. Debugging code that uses method_missing is painful: at best you get a NoMethodError on an object that you didn't expect, and at worst you get SystemStackError.
 - Non-othogonal: {|bar| bar.foo}, proc {|bar| bar.foo}, lambda {|bar| bar.foo}, def baz(bar) bar.foo end - all copy the same functionality, where Lisp gets along with only `lambda`. Some Ruby's features duplicate each other: print "Hello", puts "Hello",  $stdout<<"Hello", printf "Hello", p "Hello", write "Hello" and putc "Hello" -- all output text to stdout; there is also sprintf, which duplicates functionality of printf and string splicing. begin/do/then/end, {} and `:` also play role in bloating syntax, however, in some cases, precedence issues cause do/end and {} to act differently ({} binds more tightly than a do/end). More bloat comes from || and `or`, which serve the same purpose.
 - Ruby as a language supports continuations via callcc keyword. Ruby's callcc is incredibly slow, implemented via stack copying. JRuby and IronRuby don't have continuations at all, and it's quite unlikely they will ever get them. There were also support breaches in mainline Ruby, where Ruby 1.9 has not supported continuations for a while. If you want your code to be portable, I'd suggest not using Ruby.
 - Ruby was created "because there was no good scripting language that could handle Japanese text". Today it's mostly Rails hype and no outstanding feature, that makes the language, like the brevity of APL or simplicity and macros of Lisp. "There is some truth in the claim that Ruby doesn’t really give us anything that wasn’t there long ago in Lisp and Smalltalk, but they weren’t bad languages." -- Matthew Huntbach

Name: Anonymous 2013-02-22 17:51

Rozen Maiden has ruined my life, like it has done to so many others.

Less than a week ago, I thought the premise of the show was the stupidest thing I'd ever heard. Suiseiseki was just a meme, and I didn't even know any other characters. But then I watched the first episode. And then the second. And couldn't stop until I was done with Traumend. That was four days ago. By then, I was hopelessly entangled. I was in love with the show and the dolls. I started daydreaming that I was a member of the show's cast, or that I had a Rozen Maiden of my own. I suddenly had a craving for tea, so I went out and bought some, and it's all I've been drinking these past few days. And then it got even worse. Two days ago, I watched Overture. Now, I'm hopelessly in love with Suigintou. All I want from life is to be able to hold Suigintou and be able to cheer her up, make her happy again, so I can see her smile again. I fantasize about her becoming human, so I can go out with her, make sweet, sweet, love to her, and marry her and have a happy life with my dear Suigintou. The show's given me other side effects, too, which keep getting worse. Whenever I see porn or hentai now, all I can think is "no dolljoints, not hot." All I can fap to is Suigintou doujins. I see Shinku's face and get in a bloodcurdling rage like I've never felt before. She made my Suigintou cry! I've stopped caring about my car, which for years was everything to me. I've stopped caring about what I eat, except for a craving for Flowery Hamburger. I don't care about any other anime, manga, or any video games. My only realistic desire right now is for an accurate Suigintou doll that I can cuddle while I sleep. I get jealous when I see anyone talk about her or post her picture, and pissed off when I hear the word junk.

Come to me, Suigintou! I'll love you, let me make you happy! You're not junk, let me give you my devotion and love and you'll see that you don't need to be so sad!

I'm crying as I type this.

Name: Anonymous 2013-02-22 17:52

>>14 here! Sorry about posting in the wrong thread! Please feel free to ignore my post!

Name: Anonymous 2013-02-22 18:09

Perl-looking code, like proc {|obj, *args| obj.send(self, *args)}
What is Smalltalk?

Name: Anonymous 2013-02-22 18:23

>>16
What is /backplate getgoes/?

Name: Anonymous 2013-02-22 18:49

>>17
What is arbitrarily spouting memes when faced with a valid statement?

Name: Anonymous 2013-02-23 23:19

>>18
What is irony?

Name: Anonymous 2013-02-24 0:28

>>19
What is love?

Name: Anonymous 2013-02-24 0:34

>>20
What is baby don't hurt me?

Name: Anonymous 2013-02-24 0:39

>>20
Baby don't hurt me.

Name: Anonymous 2013-02-24 0:39

>>21
>>22
No more.

Name: Anonymous 2013-02-24 5:50

>>20-23
same fucking FAGGOT GOT I HATE YOU

Name: Anonymous 2013-02-24 6:33

>>24, 20-23
aww, (imagines le cudder x86 face)

Name: Anonymous 2013-02-24 8:38

>>23
Nice.

Name: Anonymous 2013-02-24 14:43

>>1
FIOC was invented by a Jew from Google.
Ruby was invented by a Japanese Freemason (Mormon)

I was forced to use any of them, I would have chosen Ruby, just because Ruby has less Jews around it.

Name: Anonymous 2013-02-24 16:03

Name: Anonymous 2013-02-24 16:44

>>28
GUIDOLIN fioc
oh god what

Name: Anonymous 2013-02-24 16:46

GUIDOlin_waferFIOC.jpg

Name: Anonymous 2013-02-24 16:53

http://www.guidolinespana.es/wafer_cavalli.php

WAFER FIOC PLUS
WAFER FIOC PRESTIGE
WAFER FIOC LIGHT
WAFER FIOC ENTERPRISE

Name: Anonymous 2013-02-24 17:01

WAFER FIOC ENTERPRISE is now a meme.

Name: Anonymous 2013-02-24 18:37

>>32
I'll help you forcing it.

Name: Anonymous 2013-02-24 20:53

>>33
thank you, kind soul. nice dubz, too ^_^

Name: Anonymous 2013-02-25 8:12

>>1
perl

Name: Anonymous 2013-02-25 9:49

Python manuel
Chapter 5: Advanced python programming

-Iterators

(´_`7>

Name: Anonymous 2013-02-25 12:31

>>36
:3

Don't change these.
Name: Email:
Entire Thread Thread List