Guider och länkar för programspråk

Här diskuteras programmering och utveckling
Användarvisningsbild
DrMegahertz
Inlägg: 296
Blev medlem: 06 maj 2006, 14:37
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS
Ort: Södra Dalarna

Guider och länkar för programspråk

Inlägg av DrMegahertz »

Här samlar vi på länkar och guider för dom som vill lära sig programmera och/eller friska upp sitt minne.

Lämna hemskt gärna (konstruktiv ;)) kritik och fler förslag på länkar så lägger jag till det i listan! :)

Observera att detta är en tråd för att samla ihop information om olika programmeringsspråk, därför ber jag er att inte ställa frågor angående programmering i den här tråden!



C
Ett mycket populärt, kraftfullt och snabbt programspråk som gett inspiration till många modernare språk. Linux är skrivet i C. ;) Wikipedia/C

Komma igång!
Programming in C
cprogramming.com's C Tutorial

Referenser
The C Library Reference
Signalhantering i Linux
GCC C Extensions
CProgramming.com
Gasol's kompileringsguide

Kodexempel

Kod: Markera allt

#include <stdio.h>

int main() {
    int n;

    for(n=0; n < 10; n++) {
        printf("Hello %d!\n", n);
    }

    return 0;
}


C#
Objektorienterat "högnivå" språk. Ursprungligen skapat av M$ för sin .NET plattform. Porterat och frigjort via minst två olika projekt (dotGnu och MONO).

Installation
sudo apt-get install monodevelop

Komma igång
Learning Programming with C#
The Mono Handbook

Kodexempel

Kod: Markera allt

using System;

class MainClass
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Hello World!");
    }
}


C++
Ett mycket kraftfullt och snabbt programspråk med stöd för objektorientering på låg nivå. Wikipedia/C++

Komma igång!
C++-Manual på Svenska
C++ Language Tutorial
Blinkenlights nybörjarguide i C++
Blinkenlights nybörjarguide i C++ Fortsättning

Referenser
C++ Reference
C++ Library Reference

Kodexempel

Kod: Markera allt

#include <iostream>

using namespace std;

int main(int argc, char **argv) {
    for(int n=0; n < 10; n++) {
        cout << "Hello " << n << '!' << endl;
    }

    return 0;
}


Java
Ett plattformsoberoende, objektorienterat språk som liknar C/C++ men till skillnad från dem så har Java en del underlättande funktioner såsom automatisk skräphantering.Wikipedia/Java

Komma igång!
Wikibumba/Java
Creating a GUI with JFC/Swing

Referenser
Java 6.0 API Reference

Kodexempel

Kod: Markera allt

public class Hello {

   public static void main(String[] args) {

       for(int i = 1; i < 10000; i++) {
           System.out.println("Hello " + i);
       }
   }
}


Perl
Ett snabbt skriptspråk som lämpar sig väl för stränghantering, CGI-skript och automatiserat systemunderhåll(mm.).Wikipedia/Perl

Installation
sudo apt-get install perl

Komma igång!
Beginner's Introduction to Perl
The perl.org Online Library

Kodexempel

Kod: Markera allt

#!/usr/bin/perl

for $n (0..9) {
    print "Hello $n!\n";
}

Python
Ett kraftfullt men enkelt skriptspråk med ett rikt standardbibliotek och en bred community. Wikipedia/Python

Installation
sudo apt-get install python

Komma igång!
Python Tutorial
Bli ormtjusare - En nybörjarguide på svenska
Ett gäng guider för icke-programmerare
Ett gäng guider för programmerare
Instant Hacking

Referenser
Python och Jag - Uppslagsverk för Python på Svenska
Python Library Reference
Extending and Embedding the Python Interpreter
Python C API Reference

Kodexempel

Kod: Markera allt

#!/usr/bin/python

for n in range(10):
    print "Hello %d!" % n


Ruby
Ett rent objektorienterat skriptspråk som inspirerats av bland annat Perl och Python. Wikipedia/Ruby

Installation
sudo apt-get install ruby irb

Komma igång!
Poignant Guide to Ruby
Programming Ruby - The Pragmatic Programmer's Guide
Ruby på 20 Minuter
Ruby från andra språk

Referenser
Ruby Core Reference
Ruby Standard Library Reference
Ruby C API Reference

Kodexempel

Kod: Markera allt

#!/usr/bin/ruby

10.times { |n| puts "Hello #{n}!" }
Tack till gasol, per9000 och Joe för länkar och kodexempel!
Senast redigerad av 1 DrMegahertz, redigerad totalt 3 gånger.
BildAre you shpongled? Bild
Användarvisningsbild
Luxwarp
Inlägg: 591
Blev medlem: 16 nov 2007, 02:05
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Göteborg
Kontakt:

SV: Guider och länkar för programspråk

Inlägg av Luxwarp »

Hejsan, skall du inte nämna HTML, PHP, CSS, ASÅ osv?:)
--------------------------------------
Luxwarp (fd. Zifilion / MMCarlsson)

IT Consultant and Web developer.

Check out my blog about Ubuntu, development, tips, tech and all my projects over at https://codeiolo.org
Användarvisningsbild
upnorth
Inlägg: 7100
Blev medlem: 14 jun 2007, 19:43
OS: Linux Mint
Ort: Oslo

SV: Guider och länkar för programspråk

Inlägg av upnorth »

stampe skrev: Hejsan, skall du inte nämna HTML, PHP, CSS, ASÅ osv?:)
Möjligtvis PHP.
HTML och CSS hör till webbdesign.
Användarvisningsbild
Luxwarp
Inlägg: 591
Blev medlem: 16 nov 2007, 02:05
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Göteborg
Kontakt:

SV: Guider och länkar för programspråk

Inlägg av Luxwarp »

upnorth skrev:
stampe skrev: Hejsan, skall du inte nämna HTML, PHP, CSS, ASÅ osv?:)
Möjligtvis PHP.
HTML och CSS hör till webbdesign.
aa kom på det när jag såg webdesign tavlan:)
--------------------------------------
Luxwarp (fd. Zifilion / MMCarlsson)

IT Consultant and Web developer.

Check out my blog about Ubuntu, development, tips, tech and all my projects over at https://codeiolo.org
fisfia
Inlägg: 458
Blev medlem: 05 aug 2007, 15:52
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS
Ort: Skåne, Sverige
Kontakt:

Re: Guider och länkar för programspråk

Inlägg av fisfia »

Nån som har en vettig LaTeX-guide? Alla jag läst hittills har varit så svåra att fatta eller så har de varit allt för omfattande. Jag skulle vilja ha nåt enkelt! :'(
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

Re: Guider och länkar för programspråk

Inlägg av Lars »

Kolla in http://ubuntu-se.org/wiki/Program/LaTex och länkarna där.
fisfia
Inlägg: 458
Blev medlem: 05 aug 2007, 15:52
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS
Ort: Skåne, Sverige
Kontakt:

Re: Guider och länkar för programspråk

Inlägg av fisfia »

Lars skrev:Kolla in http://ubuntu-se.org/wiki/Program/LaTex och länkarna där.
Tusen tack. Jättebra! Och på svenska! Så lyxigt.
Dendrite
Inlägg: 98
Blev medlem: 03 jun 2008, 13:53
OS: Ubuntu
Utgåva: 16.04 Xenial Xerus LTS

Re: Guider och länkar för programspråk

Inlägg av Dendrite »

Finns det inte nånting som heter R?

Och Fortran, hur är det med det? Vad lämpar det sig till? Är det objektorienterat?
Användarvisningsbild
gasol
Inlägg: 405
Blev medlem: 27 jul 2007, 14:57
Kontakt:

Re: Guider och länkar för programspråk

Inlägg av gasol »

Dendrite skrev:Finns det inte nånting som heter R?

Och Fortran, hur är det med det? Vad lämpar det sig till? Är det objektorienterat?
Fortran är ett imperativ språk precis som te.x. C. Fortran brukar används på paralleldatorer om jag inte minns fel.
R är ett programmeringsspråk som används för att göra statistiska beräkningar.

edit: hehe kollade upp Fortran, senaste versionen (2003) har visst stöd för objektorientering ^_^
The Black Mountain Scorpion Hoedown Bluegrass Experience Gang
From Left to Right: Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle.
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

Re: Guider och länkar för programspråk

Inlägg av Pinky »

Jag är på jakt efter några bra guider för Java EE och Java ME (enterprise edition & micro edition). Någon som vet någon bra sida?
AJxn
Inlägg: 118
Blev medlem: 07 jan 2007, 22:13
OS: Debian
Utgåva: 23.10 Mantic Minotaur
Ort: Gävle

Re: Guider och länkar för programspråk

Inlägg av AJxn »

gasol skrev:
Dendrite skrev:Finns det inte nånting som heter R?

Och Fortran, hur är det med det? Vad lämpar det sig till? Är det objektorienterat?
Fortran är ett imperativ språk precis som te.x. C. Fortran brukar används på paralleldatorer om jag inte minns fel.
R är ett programmeringsspråk som används för att göra statistiska beräkningar.

edit: hehe kollade upp Fortran, senaste versionen (2003) har visst stöd för objektorientering ^_^
Fortran är som Cobol. Det existerar fortfarande för att mycket kod är skrivet i det. Fortran används, som du skriver, främst för matematiska/tekniska beräkningar. C++ är det språk som tagit över efter Fortran när man nyutvecklar sådan programvara.

Skall man programmera parallellt, så bör man använda sig av Erlang. Ett språk som, till skillnad från alla andra populära språk, har processhantering inbyggt i språket och på ett smidigt sätt kommer runt problem med dead locks etc. När Java och C# gett upp, så fortsätter Erlang att skapa ett par 10 000 fler processer innan det ger upp. Se hemsidan för mer information.

Kod: Markera allt

% Testprogrammet
-module(test1).
-export(test_pgm1/0).
% test_pgm1/0
test_pgm1() ->
   test_pgm1(10).
% Antal argument är viktigt.  test_pmg/0 och test_pgm/1 är olika funktioner
% test_pgm1/1
test_pgm1(0) -> % basfall, vi är klar
   ok.
test_pgm1(N) -> % rekursionsfall, vi anropar test_pgm1/1 igen med nästa värde
   N1 = N - 1,
   io:format("N = ~w~n", [N]),
   test_pgm1(N1). 
AJxn
Inlägg: 118
Blev medlem: 07 jan 2007, 22:13
OS: Debian
Utgåva: 23.10 Mantic Minotaur
Ort: Gävle

Re: Guider och länkar för programspråk

Inlägg av AJxn »

DrMegahertz skrev: C++
Ett mycket kraftfullt och snabbt programspråk med stöd för objektorientering på låg nivå. Wikipedia/C++
C++ är härstammande från Simula (och C). Likheten mellan C++ och Simula är att objektorienteringen inte genomsyrar språket fullt ut. Mycket är statiskt bestämt vid kompileringen och inte vid exekveringen. Vilket ofta ger effektivare maskinkod, men statiskare program.
Java
Ett plattformsoberoende, objektorienterat språk som liknar C/C++ men till skillnad från dem så har Java en del underlättande funktioner såsom automatisk skräphantering.Wikipedia/Java
Java har inspirerats från Smalltalk och Objectiv C, inte från C++ som många verkar tro. Interface och avsaknad av multipelt arv har Java direkt från Objective C. C++ har inte Interface men däremot multipelt arv.
Ruby
Ett rent objektorienterat skriptspråk som inspirerats av bland annat Perl och Python. Wikipedia/Ruby
Ruby har inspiration från Smalltalk, och inte så mycket från Python (Perl? möjligen reguljära uttrycken). ALLT är objekt i Smalltalk och Ruby, till och med tal och programkod.

I huvudsak kan man härleda alla objektorienterade programmeringsspråk till antingen Simula (det första objektorienterade programmeringsspråket) eller Smalltalk (det andra stora tidiga objektorienterade programmeringsspråket). Simula bestäms det mesta vid kompileringen, vilket ger ett mer statiskt program. I Smalltalk så bestäms vilken kod som skall exekveras vid exekveringstillfället, vilket ger ett mer dynamiskt beteende, men inte lika beräkningseffektivt.

Länkar om Objective C
Smalltalk.org, sida om Smalltalk
Sida om Simula
Jojan
Inlägg: 95
Blev medlem: 18 nov 2007, 22:47
OS: Ubuntu
Utgåva: 18.04 Bionic Beaver LTS
Ort: Huddinge / Stockholm / Sverige
Kontakt:

Re: Guider och länkar för programspråk

Inlägg av Jojan »

Prolog
Programmeringsspråk för logikprogrammering. Mycket skoj att pilla med, och väldigt snabbt. Jag tror inte man behöver ha någon superkoll på logik för att progammera, men viss kunskap behövs för djupare förståelse.
Det man i princip gör är att säga vad som är sant, och vilka samband som ska gälla. Sen gör programmet sitt bästa för att hitta en lösning åt dig.

Komma igång!
comp.lang.prolog - FAQ

Referenser
Free Online Prolog Tutorials
On-line guide to Prolog Programming
GProlog
SWI Prolog

Kodexempel

Kod: Markera allt

% Supervanligt typ av exempel.
kind(Alex).
kind(Jan).
kind(Lars).

handsome(Lars).
handsome(Sven)

funny(Alex).
funny(Lars).

perfect(X) :- kind(X), handsome(X), funny(X).

Kod: Markera allt

% Svårare exempel
% Några ord.
words0(["TUTOR","EARLY","HOOEY","DODGE", "DITTO"]).
words1(["DITCH","TUTOR","EARLY","HOOEY","DODGE", "DITTO", "DITCH","TUTOR","EARLY","HOOEY","DODGE", "DITTO"]).
words2(["DITCH","TUTOR","EARLY","HOOEY","DODGE", "DITTO", "RITAR", "HEJSAN"]).
words3(["DITCH","TUTOR","EARLY","HOOEY","DODGE", "DITTO", "APRON", "ALLAH", "HELLO", "LOLIN", "ROLIL", "NANRO"]).

% Andra Prologlaborationen i kursen Programmeringsparadigm 2008

% crossword/2 tar en lista med strängar (om fem tecken) som indata och unifierar
% dessa till ett passande korsord
crossword(Fa,R) :-	select(T1,Fa,Fb),
			select(T2,Fb,Fc),
		        first(T1, A), first(T2, A),
			select(T3,Fc,Fd),
		        third(T1, B), first(T3, B),
			select(T4,Fd,Fe),
			fifth(T1, C), first(T4, C),
			select(T5,Fe,Ff),
			third(T2, D), first(T5, D),
			third(T3, F), third(T5, F),
			third(T4, H), fifth(T5, H),
			select(T6,Ff,_),
			fifth(T2, E), first(T6, E),		
			fifth(T3, G), third(T6, G),
			fifth(T4, I), fifth(T6, I),

			R = [T1,T2,T3,T4,T5,T6].    % Sätter allt i en lista

% write_crossword/1 får en lista som den skriver ut
write_crossword(R) :-	first(R,T1), second(R, T2), third(R, T3),
			fourth(R,T4), fifth(R, T5), sixth(R,T6),

			format(T1,[]),nl,
			second(T2,Aa), second(T3, Ab), second(T4,Ac),
			format([Aa,32,Ab,32,Ac],[]),nl,

			format(T5,[]),nl,

			fourth(T2,Ba), fourth(T3, Bb), fourth(T4,Bc),
			format([Ba,32,Bb,32,Bc],[]),nl,

			format(T6,[]),nl.
% Genväg till "new line".
nl :- format("\n",[]).

% Returnerar första-sjätte värdet i en lista.
first([A|_], A).
second([_|A], B) :- first(A,B).
third([_|A], B)  :- second(A,B).
fourth([_|A], B) :- third(A,B).
fifth([_|A], B)  :- fourth(A,B).
sixth([_|A], B)  :- fifth(A,B).
Jag tycker SWI Prolog är bättre. Men om man vill använda GNU Prolog så kan man göra det.

Kod: Markera allt

sudo apt-get install swi-prolog

Kod: Markera allt

sudo apt-get install gprolog

Haskell
Mycket snabbt beräkningsspråk. Relativt simpelt att förstå sig på och ganska likt så man skriver i matematik. Bäst för beräkningar, men kan mycket annat.

Komma igång!
Haskell Wiki
Haskell Tutorial
Haskell för C-programmerare

Referenser
Hugs 98
Glasgow Haskell Compiler

Kodexempel

Kod: Markera allt

-- Snabbt exempel
-- Rekrusiv metod för att beräkna Fibonaccital
fib :: Integer -> Integer	--För att klara stora tal används Integer
fib n	| n <= 0	= 0	-- är n = 0 så returneras 0
	| n == 1	= 1	-- är n = 1 så returneras 1
	| otherwise	= fib(n-1)+fib(n-2) -- rekrusiv bit
Kodexempel

Kod: Markera allt

-- Svårare exempel
-- Hitta längsta ordet i en mening
import Char

maxord :: String -> Int
maxord s	= help 0 0 s

help :: Int -> Int -> String -> Int
help n m []	| m > n	    = m -- Fallet för tom lista
		| otherwise = n

help n m (c:s) 	| isAlpha c 	= help n (m+1) s
		| m > n 	= help m 0 s
		| otherwise 	= help n 0
Jag tycker GHC är bättre. Men om man vill använda Hugs så kan man göra det.

Kod: Markera allt

sudo apt-get install ghc

Kod: Markera allt

sudo apt-get install hugs
Användarvisningsbild
Substrata
Inlägg: 71
Blev medlem: 13 apr 2010, 11:01
OS: Arch Linux
Utgåva: Vet inte/ingen utgåva passar

Clojure

Inlägg av Substrata »

Clojure är ett nytt språk och en modern implementation av Lisp för JVM. Det har direkt tillgång till hela javalib och är särskilt riktad mot multitrådad programmering. Clojure står på på funktionell programmering över immutable data, för att undvika låsningar trådar emellan; i stället implementeras en STM.

Lisp har en uniform prefix-syntax strukturerad i listor av listor; alltså träd. Några exempel:

Kod: Markera allt

(+ 1 1) => 2
(* (+ 1 2) (+ 4 5)) => 27
(apply str (reverse "Hello, world!")) => "!dlrow ,olleH"
Clojure har direkt tillgång till Java. Objekt av olika klasser kan instantieras samtidigt som dess metoder definieras. Följande funktion anropas med valfri rendreringsfunktion som argument, och ger en JPanel med överriden Jpanel.paint(graphics):

Kod: Markera allt

; (graphics -> nil) -> javax.swing.JPanel
(defn panel [render-fn]
  (proxy [JPanel] []
    (paint [g] (render-fn g))))
Ett fönster till detta:

Kod: Markera allt

; (graphics -> nil) -> javax.swing.JFrame
(defn frame-with-panel [render-fn]
  (doto (new JFrame)
    (.setContentPane (panel render-fn))
    (.show)))
Så att

Kod: Markera allt

(frame-with-panel (view-scene scene1))
skapar ett fönster med en specifik vy, vilket nyttjar en vanlig abstraktion i funktionell programmering: view-scene tar en scen och ger en funktion som tar en graphics: view-scene: scene -> (graphics -> nil): en delvis specifiering av en funktion.

Clojure implementerar lata sekvenser. Att en sekvens är lat innebär att "nästa element" inte är utvärderas förrän dess värde används. Med detta kan vi definiera oändliga sekvenser ur vilka vi bara är intresserade vissa delmängder, och med vilka vi kan iterera över godtyckligt genererade datamängder.

Standarden ger exempelvis funktionen repeat: n -> (n n n ...), vilken vi kan tillämpa:

Kod: Markera allt

(take 3 (repeat 1)) => (1 1 1)
och iterate: f n -> (n (f n) (f (f n) ...), som i:

Kod: Markera allt

(take 3 (iterate inc 1)) => (1 2 3)


En rekursivt definierad följd som fibonaccitalen kan vi i Clojure uttrycka som en oändlig sekvens:

Kod: Markera allt

; number-a number-b -> number-sequence 
(defn fib-seq [a b]
 (cons (+ a b) (lazy-seq (fib-seq (+ a b) a))))

=> (take 5 (fib-seq 1 1))
(2 3 5 8 13)
Lata sekvenser utvärderas till konstanter: referenserna till elementen utvärderas bara en gång. Vi kan därmed memoisera sekvenser genom att hålla en referens:

Kod: Markera allt

(def fibs (concat [1 1] (fib-seq 1 1)))

Vid bruk märks alltså skillnaden:

=> (time (dorun (take 100000 fibs)))   
"Elapsed time: 8521.250263 msecs"
=> (time (dorun (take 100000 fibs)))   
"Elapsed time: 141.765916 msecs"
Det finns stödmoduler för Clojure till bland annat Eclipse, Emacs och Vim.
Användarvisningsbild
Substrata
Inlägg: 71
Blev medlem: 13 apr 2010, 11:01
OS: Arch Linux
Utgåva: Vet inte/ingen utgåva passar

Re: Guider och länkar för programspråk

Inlägg av Substrata »

D är ett språk under full utveckling som aspirerar mot samma domän och kraftfullhet som C++, men utan dess syntaktiska problematik. D är kompilerat (Linux, Windows, OS X...), statiskt typat, har kraftfulla templates och anammar passligt funktionell programmering, vilket bland annat verkar ge en bättre STL. Min egen husgud inom C++, Andrei Alexandrescu, släppte i år en bok om D med förord av Scott Meyers. Båda har skrivit böcker om C++ som jag brukar rekommendera, och nu omfamnar de även D.

I dag har jag satt mig ned och knådat lite kod. Här är ett program som listar alla exekverbara filer i PATH.

Kod: Markera allt


import std.algorithm;
import std.array;
import std.file;
import std.stdio;
import std.string;
import std.process;
import core.sys.posix.sys.stat; // for stat.st_mode 

bool isExecutable(string p)
{
  return isfile(p) && (getAttributes(p) & S_IXUSR);
}

string[] entries(in string p, SpanMode m = SpanMode.shallow)
{
  auto r = appender!(string[]);
  foreach (string x; dirEntries(p, m)) r.put(x);
  return r.data();
}

string[] executables(string[] dirs)
{
  auto r = appender!(string[]);
  foreach (x; dirs) r.put( filter!(isExecutable)( entries(x) ));
  return r.data();
}

int main(string[] args)
{
  string[] paths = getenv("PATH").split(":");
  writeln( executables(paths).join("\n") );
  return 0;
}
zacke2
Inlägg: 1
Blev medlem: 03 dec 2010, 02:06
OS: Open Suse
Utgåva: Vet inte/ingen utgåva passar

Re: Guider och länkar för programspråk

Inlägg av zacke2 »

O0 Såg det här inlägget och tänkte "Perfekt då får jag tips om Vala!"
Som ska vara ett C# liknande programspråk/skriptspråk som kan kompileras eller skapa c filer.
Verkar spännande för mig som jobbar med embedded där C eller i hm "bästa fall" C++ finns tillgängligt.
Tänk att komma upp i lite fart i programmeringen, som att gå från assembler till C!
Därför tar jag nu hem Ubuntu å sänder en tacksamhetens tanke till den kreativa Open Source världen.
Zacke
sathishksk71
Inlägg: 1
Blev medlem: 15 aug 2017, 05:42
OS: Windows

Re: Guider och länkar för programspråk

Inlägg av sathishksk71 »

Hi all
This tutorial is very useful for beginners to learn C programming with example programs.

http://c-language.com/

This tutorial is very useful for beginners to learn Java, JDBC, JSP with example programs.

http://www.java-tutorial.com/
Skriv svar

Återgå till "Programmering och webbdesign"