Permalänk

Kan bara ge er alla en eloge för sjukt mycket bra och informativa svar! Både intressant och förväntat att folk har olika åsikter om var en bör börja, men Python verkar det ändå finnas konsensus i att det kan vara en bra startpunkt. Vet ju även om att det används flitigt idag, inte minst för automatisering. Låter bra att det är ett relativt "enkelt" språk så jag inte gapar efter för mycket på en gång

Men mycket bra tips som sagt, kommer ta med mig det! Som @serafim tipsade om så ska jag nog gå igenom en grundlig kurs först för att få lite kontext, så tar jag det därifrån.

Ska ge er en uppdatering framöver hur det har gått!

Permalänk
Medlem
Skrivet av dasomannen:

Kan bara ge er alla en eloge för sjukt mycket bra och informativa svar! Både intressant och förväntat att folk har olika åsikter om var en bör börja, men Python verkar det ändå finnas konsensus i att det kan vara en bra startpunkt. Vet ju även om att det används flitigt idag, inte minst för automatisering. Låter bra att det är ett relativt "enkelt" språk så jag inte gapar efter för mycket på en gång

Men mycket bra tips som sagt, kommer ta med mig det! Som @serafim tipsade om så ska jag nog gå igenom en grundlig kurs först för att få lite kontext, så tar jag det därifrån.

Ska ge er en uppdatering framöver hur det har gått!

Av ren nyfikenhet, när används phyton inom automatisering? Förstår att ämnet automatisering är ju är ju rätt brett men det är också det ämnet som jag studerar inom så därför blev jag nyfiken.

Jag sökte faktiskt lite sommarkurser nu till sommaren i programmering. Därav en är i phyton. Anledningen till detta är jag vill få en något djupare förståelse för programmering. Så även om det inte är exakt samma som tex Rapid (ABB robot) så snappar man ändå upp en hel del kunskap som man kan nyttja i andra språk eftersom många språk liknar varandra rätt så mycket. Förutom PLC programmering (tex ladder diagram) då det är något helt annat ^^

Permalänk
Medlem
Skrivet av Elektron:

Av ren nyfikenhet, när används phyton inom automatisering? Förstår att ämnet automatisering är ju är ju rätt brett men det är också det ämnet som jag studerar inom så därför blev jag nyfiken.

Jag sökte faktiskt lite sommarkurser nu till sommaren i programmering. Därav en är i phyton. Anledningen till detta är jag vill få en något djupare förståelse för programmering. Så även om det inte är exakt samma som tex Rapid (ABB robot) så snappar man ändå upp en hel del kunskap som man kan nyttja i andra språk eftersom många språk liknar varandra rätt så mycket. Förutom PLC programmering (tex ladder diagram) då det är något helt annat ^^

Jag hade kallat vad du verkar studera för "automation" snarare än "automatisering", och i mitt huvud är "automation" mer relaterat till mekatronik, elektroteknik, och styrsystem, medan "automatisering" är mer att skriva program / skript som automatiskt utför sysslor (främst i kontorsmiljö) som annars ofta görs för hand, till exempel: uppdatera ett Excel-ark med data från en webbsida; skicka ett mail med statusrapport en gång om dagen; flytta och döpa om filer efter nån struktur; etc.

Permalänk
Medlem
Skrivet av Bryal:

Jag hade kallat vad du verkar studera för "automation" snarare än "automatisering", och i mitt huvud är "automation" mer relaterat till mekatronik, elektroteknik, och styrsystem, medan "automatisering" är mer att skriva program / skript som automatiskt utför sysslor (främst i kontorsmiljö) som annars ofta görs för hand, till exempel: uppdatera ett Excel-ark med data från en webbsida; skicka ett mail med statusrapport en gång om dagen; flytta och döpa om filer efter nån struktur; etc.

Du kan kalla det industriell automatisering.
Som sagt ordet automatisering är rätt brett.

Permalänk
Avstängd

Jag har inte genomfört dom här övningarna (är själv helt grön) bara börjat så smått, men en bra gratis* (man kan betala för extra vägledande material men tror det är gratis annars) kurs för Python:
https://learnpythonthehardway.org/python3/

Permalänk
Medlem
Permalänk
Medlem
Skrivet av serafim:

Jag har arbetat med programmering i över 40 år och har programmerat i över hundra olika programspråk och jag blir lite förvånad när jag ser folk rekommendera C++, C# eller Java som förstaspråk. Jag har också under mer än 25 år lärt ut programmering på KTH, både på grundläggande nivå och på avancerad nivå.

Ska man lära sig programmering är det viktigt att använda ett språk med enkel syntax och helst med en enkel semantik också. Under åren har man valt olika språk som förstaspråk och det idag utan jämförelse vanligaste språket är Python (python3).

Tidigare var Scheme populärt eftersom det hade en extremt enkel syntax och innan dess var Pascal (finns knappt kvar) populärt.

Jag skulle föreslå Python som förstaspråk och att man använder någon på nätet fritt tillgänglig lärobok som grund (t.ex. någon av böckerna på https://codeburst.io/15-free-ebooks-to-learn-python-c299943f9... ) och att man använder ett Python IDE (integrated development environment). Jag är bara bekant med Linux (är usel på andra OS) men där använder jag Spyder3.

När man sen har fått in grunderna och lärt sig förstå principer och idéer kan man gå över till andra språk men tänk då på att Python också används för komplicerade och känsliga programvaror där högsta säkerhet krävs.

Mina favoritspråk: Python(3), Groovy (modern variant av Java), Scheme (mycket parenteser men kul språk).

Programmerar jag bara om jag är tvungen (p.g.a. att inget annat språk erbjuds för uppgiften): Java, C#, C++, Fortran, Cobol (alla är egentligen ganska OK men omständliga)

Annars tar man vad man har. Har man ett eller ett par språk i bagaget funkar det mesta med lite inläsning.

Kul språk (en liten varning, kanske): Oz med programmeringsomgivningen Mozart (jobbig syntax och semantik)

Kul språk utan varning: Scheme, ML, Miranda, Prolog (logikprogrammering)

Gamla språk som varit viktiga: C, Fortran, Algol, Simula, SmallTalk, Pascal.

Kan verkligen rekommendera Python som första språk, väldigt enkel grund. En bra introduktion för att lära sig kan ex. vara lite py programmering i Kodi om man har det intresset.

Permalänk
Medlem

Om ingen annan har skrivit det så börjar du här:
https://www.codecademy.com/
Det är good shit

Permalänk
Medlem

Språket Dart för att bygga mobil & webb-applikationer i Flutter om det är något du är intresserad av
Samma kod för Android, iOS & webb, men med native prestanda.

Permalänk
Medlem

Jag är själv mega-nybörjare inom programmering (försökte mig på textbaserad turn-based RPG i C++ med endast iostream-headern men fastnade på att jag inte kunde skapa klasser och objekt för Monster och Spelare så där dog det för ett par år sedan) och det viktigaste jag skulle fråga dig är exakt varför du vill lära dig.

- Jobba med det i en lång karriär?
- Bara skapa något skoj precis som du kanske lärt dig någon rolig låt på något musikinstrument?
- Lösa ett praktiskt problem i din faktiska vardag?

Flera av dessa ovannämnda alternativ? Till sist så är det bara att börja koda, göra fel, debugga, koda om tills det sitter och gå vidare, när du väl har svarat på din "Varför vill jag lära mig programmering?"-fråga.

Dyk i vattnet för bövelen istället för att bara smeka havsytan med tårna!

Permalänk
Medlem
Skrivet av dasomannen:

Kan bara ge er alla en eloge för sjukt mycket bra och informativa svar! Både intressant och förväntat att folk har olika åsikter om var en bör börja, men Python verkar det ändå finnas konsensus i att det kan vara en bra startpunkt. Vet ju även om att det används flitigt idag, inte minst för automatisering. Låter bra att det är ett relativt "enkelt" språk så jag inte gapar efter för mycket på en gång

Men mycket bra tips som sagt, kommer ta med mig det! Som @serafim tipsade om så ska jag nog gå igenom en grundlig kurs först för att få lite kontext, så tar jag det därifrån.

Ska ge er en uppdatering framöver hur det har gått!

Bra val. Python är ett bra språk att lära sig i, och det är också hyggligt välanvänt ute i verkligheten om man nu vill jobba med programmering.

Som andra också sagt finns det mycket gemensam kunskap också, så se till att ta till dig böcker, kurser, kunskap. Bygg upp en verktygslåda av verklig förståelse som går utanför just det språk, verktyg eller operativsystem och miljö du jobbar i för stunden.

Permalänk
Medlem

@serafim: Jag tror också på att börja med Python. Därefter gå över till något annat som C++ men först efter det att man lyckats börja förstå samband och framförallt väckt ett intresse.

Jag tror att börjar man med ett språk som C eller C++, särskilt när man lär sig på egen hand, så är det otroligt lätt att fastna helt och hållet och till slut begrava det nyväckta intresset.

Jag läser till Högskoleingenjör i Datateknik och vi började med Ada för att sedan gå över till C++ (Mjukvarukurser) respektive Assembler (Hårdvarukurser) och vidare från Assembler till C. Nu använder vi C för bägge.

Permalänk
Medlem
Skrivet av Elektron:

Du kan kalla det industriell automatisering.
Som sagt ordet automatisering är rätt brett.

Ok. Min poäng var iallafall att det nog inte var automation / industriell automatisering som syftades på, utan den andra sortens automatisering. Mer än att ordet är brett tycker jag att man kan se det som två helt olika ord som bara råkar stavas och uttalas likadant, så att säga.

Permalänk
Medlem
Skrivet av DanMas:

Jag tror också på att börja med Python. Därefter gå över till något annat som C++ men först efter det att man lyckats börja förstå samband och framförallt väckt ett intresse.

Python är bra men om man som @dasomannen "är lite sugen på att lära sig programmering" så skulle man också kunna tänka sig att börja med Scheme. Den sista kursen jag höll på KTH hösten 2012 för studenter på Sthlms universitet handlade om grunderna i programmeringsteknik (DA2001). Då började jag med Scheme (Racket med programmeringsomgivningen drRacket) och gick sedan över till Python (med Emacs som editor). Idén var dels att börja enkelt med ett minimum av syntax och semantik per föreläsning för att gnugga in grunderna och hur man tänker när man programmerar och dels att ge två språk med helt olika grund samt visa på olika typer av hjälpmedel. Den grundläggande boken för Scheme kan man hitta gratis på nätet och för Python finns det en uppsjö av böcker. Numera heter kursen DA1010. Som tredje språk (förutsatt att man fortfarande "är lite sugen på att lära sig programmering") så skulle man också tänka sig ett rent deklarativt språk som t.ex. Prolog (Programming with logic). De här tre språken ger en mycket bra insyn i tre olika språkkategorier. Scheme är ett rent funktionellt språk, Python är ett imperativt, aspektorienterat språk och Prolog ett deklarativt logikspråk. Har man under tiden som man tittat på Scheme och Python ändrat sig och vill komma igång med "tyngre" programmeringsuppgifter så kan man börja med Java, Groovy, C++ eller liknande men de språken har en väsentligt brantare inlärningskurva.

Skrivet av DanMas:

Jag tror att börjar man med ett språk som C eller C++, särskilt när man lär sig på egen hand, så är det otroligt lätt att fastna helt och hållet och till slut begrava det nyväckta intresset.

Håller med och tror att det vore direkt förödande för någon som "bara" är lite sugen.

Skrivet av DanMas:

Jag läser till Högskoleingenjör i Datateknik och vi började med Ada för att sedan gå över till C++ (Mjukvarukurser) respektive Assembler (Hårdvarukurser) och vidare från Assembler till C. Nu använder vi C för bägge.

Ada är ju ett "svårt" språk, omfattande, imperativt, objektorienterat, procedurellt, generiskt, distribuerat och med stöd för samtidighet (concurrency) med en av de brantaste inlärningskurvorna. Kan inte ha varit alldeles enkelt men troligen lärde man inte ut språkets alla aspekter på en grundkurs. Lite knepig inlärningsordning: Ada -> C++ -> Assembler -> C, men intressant. Jag skulle, om de här språken ansetts som nödvändiga, gått motsatt väg. Vilken högskola och vilka kurser? Skulle gärna vilja kika lite på upplägget och innehållet i kurserna (om det går för sig).

Permalänk
Medlem

@serafim: Du kan titta på upplägget för Linköping Di

Permalänk
Medlem

Python är definitivt ett trevligt språk att jobba med.

Jag vill även slå ett slag för språket som heter Scala. Det är ett derivat av Java med många trevliga tillägg som gör det smidigare och lättare att använda. Man slipper mycket av sk "boiler-plate" från Java, och det lägger till lite funktionsprogrammering på toppen som är fantastiskt att använda.

Det lärs ut i grundkursen i programmering på Datateknikprogrammet på LTH, som jag själv läste HT18. Kursen är gjord så att man klarar den oavsett tidigare erfarenheter inom programmering. Bäst av allt, kursen är öppen källkod och finns på github

Repo på github
Kurshemsida

Permalänk
Medlem
Skrivet av DanMas:

Du kan titta på upplägget för Linköping Di

Har stor respekt för LiU, har samarbetat med åtskilliga (numera pensionerade) personer där genom åren.
Läst lite om upplägget och kurserna. Stort fokus på matte, vilket nog behövs med det aktuella upplägget
och det får mig att komma med kommentaren, även riktad till @dasomannen:

Gilla matte! All seriös programmering, utom ren lek, kräver goda mattekunskaper.

Det är ingen slump att de svåraste algoritmerna ute på nätet programmerats av duktiga matematiker.
Många av programmen för snabba aktieaffärer programmeras av tekniska fysiker (som läser mycket
matte).
Sökalgoritmerna för sökningar på webben kräver mycket matte för att ge bra träfflistor. Nästan alla
sökmotorer använder Carrot2, en kluster-programvara, som bygger på mycket avancerad matte.

Men, egentligen: Tack för länken. Intressant upplägg. Man ger sig inte på den utbildningen utan
stark motivation. Lycka till med studierna!

Permalänk
Medlem
Skrivet av Elektron:

Av ren nyfikenhet, när används phyton inom automatisering? Förstår att ämnet automatisering är ju är ju rätt brett men det är också det ämnet som jag studerar inom så därför blev jag nyfiken.

Jag sökte faktiskt lite sommarkurser nu till sommaren i programmering. Därav en är i phyton. Anledningen till detta är jag vill få en något djupare förståelse för programmering. Så även om det inte är exakt samma som tex Rapid (ABB robot) så snappar man ändå upp en hel del kunskap som man kan nyttja i andra språk eftersom många språk liknar varandra rätt så mycket. Förutom PLC programmering (tex ladder diagram) då det är något helt annat ^^

Om du exempelvis hoppar in på PLC-next från Phoenix Contact så kan du använda de vanligaste högnivåspråken såsom C, Python, Java och Simulink och även blanda dessa fritt i samma program men även vanlig PLC-kod om man nu är van vid det.
Ett nytt tänk får man väl säga då det också är mycket enklare att hitta en C-programmerare än en PLC-programmerare idag.

Permalänk
Medlem
Skrivet av Bryal:

Jag hade kallat vad du verkar studera för "automation" snarare än "automatisering", och i mitt huvud är "automation" mer relaterat till mekatronik, elektroteknik, och styrsystem, medan "automatisering" är mer att skriva program / skript som automatiskt utför sysslor (främst i kontorsmiljö) som annars ofta görs för hand, till exempel: uppdatera ett Excel-ark med data från en webbsida; skicka ett mail med statusrapport en gång om dagen; flytta och döpa om filer efter nån struktur; etc.

Automatisering är det som sker just nu inom industrin där allt automatiseras. Det är ingen idag som vill stå och flytta en plåtbit från en maskin till en annan om det går att automatisera detta med en robot eller en liten AGV mellan maskinerna.
Men automation och automatisera går säkerligen att använda inom fler olika områden, men det är nog mest vart man kommer från. Jag är automationstekniker så jag ser det mer från industrins sida.

Permalänk
Medlem

Börja kolla på Python. Både lätt att lära och kraftfullt!

Permalänk
Medlem
Skrivet av iPicks:

Jag vill även slå ett slag för språket som heter Scala. Det är ett derivat av Java med många trevliga tillägg som gör det smidigare och lättare att använda. Man slipper mycket av sk "boiler-plate" från Java, och det lägger till lite funktionsprogrammering på toppen som är fantastiskt att använda.

Det lärs ut i grundkursen i programmering på Datateknikprogrammet på LTH, som jag själv läste HT18. Kursen är gjord så att man klarar den oavsett tidigare erfarenheter inom programmering. Bäst av allt, kursen är öppen källkod och finns på github

Repo på github
Kurshemsida

Kul! Då jag jobbade ihop med folk från LTH var Simula deras huvudspråk. Jag skrev ihop en simulaimplementation för Macintosh åt dem (och åt KTH som också var väldigt Simulainriktat då). MacOS (före MacOSX) var skrivet i Object Pascal och det blev mycket "fusk" för att få Simula att fungera ihop med Mac:ens skärm! Så småningom gick man över till Java på både KTH (fast inte på grundkursen) och LTH och numera alltså Scala på LTH. Intressant! Tvekade mellan Scala och Groovy för ett jätteprojekt men det blev Groovy där, som också blev ett av mina favoritspråk.

Permalänk
Medlem

PHP är annars ett perfekt nybörjarspråk.

Permalänk
Medlem
Skrivet av skyw00lker:

Tänker ge mig in i språkkriget också.

Python är det språk man ska börja i, alternativt något helt funktionellt språk.

Hello World i python

print("Hello World")

Hello World i Java/C#

public ... class

void main ...
console ...

Vad exakt får man ut av att ha all denna boilerplate kod ni som förespråkar C#/java/C++

Säkert en smaksak, men jag avskyr verkligen indentering som i Python och t ex YAML.

Vidare så tycker jag Python är väldigt grisigt "runtomkring". 3.x släpptes för 12 år sedan, men folk vill ändå hålla fast vid 2.x.
Ser man ett script som börjar såhär:
#!/usr/bin/env python
Så har jag fortfarande inte fattat hur fan man ska veta om man ska exekvera det med 2.x eller 3.x
Använder man fel version får man bara nån fet stacktrace, inte ett vänligt meddelande om att "vänligen kör detta script med 3.x istället för 2.x som du försöker".

Sen har vi hela pakethanteringen. Allt ska in i nått globalt smuts med pip-install. Tror detta går att lösa med "virtualenv" men det har jag aldrig orkat läsa på.
Det finns nått stöd för "requirements.txt", men det är inget som löser sig "automagiskt" vid runtime utan man är ändå själv belagd med att lösa korrekt installation.

Är väl säkert inget fel på Python i sig, men ekosystemet runtom lämnar en del att önska.

Permalänk
Medlem
Skrivet av BasseBaba:

Säkert en smaksak, men jag avskyr verkligen indentering som i Python och t ex YAML.

Vidare så tycker jag Python är väldigt grisigt "runtomkring". 3.x släpptes för 12 år sedan, men folk vill ändå hålla fast vid 2.x.
Ser man ett script som börjar såhär:
#!/usr/bin/env python
Så har jag fortfarande inte fattat hur fan man ska veta om man ska exekvera det med 2.x eller 3.x
Använder man fel version får man bara nån fet stacktrace, inte ett vänligt meddelande om att "vänligen kör detta script med 3.x istället för 2.x som du försöker".

Sen har vi hela pakethanteringen. Allt ska in i nått globalt smuts med pip-install. Tror detta går att lösa med "virtualenv" men det har jag aldrig orkat läsa på.
Det finns nått stöd för "requirements.txt", men det är inget som löser sig "automagiskt" vid runtime utan man är ändå själv belagd med att lösa korrekt installation.

Är väl säkert inget fel på Python i sig, men ekosystemet runtom lämnar en del att önska.

Verkar vara ett tag sedan du programmerade Python. Om man använder t.ex. Spyder3 som IDE så får man ett "ekosystem" på köpet. Håller reda på allt åt en (utom själva programmeringen). Finns flera andra naturligtvis. Ingen kritik, jag har egna hatobjekt i programmeringsvärlden och har inte orkat sätta mig in i hur de (förhoppningsvis) har utvecklats.

Permalänk
Medlem

@BasseBaba:

Ang. syntaxen kan jag inte säga något om. Jag lärde mig gilla det, hade nog samma åsikter som dig!

Gällande paketsystemet så visst det har sina brister och jag tycker inte heller dokumentationen är speciellt introduktionsvänlig, sitter i en kanal där personer implementerar algotrading m.h.a. python bibliotek och när någon ny person kommer in är det oftast miljön runt omkring som ställer till.

Python 2 är nu officiellt utan stöd dock!

Jag tycker att det är lite risky att skylla versioner och paket på python, vilket språk fungerar inte med rätt version, eller installation av paket?

python3.8 -m venv NAMNPÅMILJÖ source NAMNPÅMILJÖ/bin/activate pip install -r requirements.txt python main.py

requirements.txt

requests

såhär får du en egen miljö för dina paket för ett projekt med virtual environments.

Permalänk
Medlem

På Chalmers Computer Science program så började vi med assembler för en flispprocessor, därefter C, Java och Haskel. Det är dom enda språkspecifika kurserna jag har gått. Jag tycker att dom ger en väldigt bra grund till att snabbt lära sig och förstå nya språk. Det är vanligt att när man påbörjar en ny kurs där man ska lära sig ett särskilt koncept som exempelvis parallel programming eller databaser att man behöver lära sig ett helt nytt språk även om kursen i sig inte handlar om att lära sig ett språk.

Ett tips skulle kunna vara att kolla lite på Computer Science programmen på Chalmers, KTH, LTH osv vilka kurser de läser. Vanligtvis så är allt material som föreläsningar och laborationer tillgängliga för alla. Om inte så finns det väldigt mycket material på mit opencourseware https://ocw.mit.edu/courses/intro-programming/

Tips är att leta upp laborationer/utmaningar på ämnen som man tycker låter intressanta.

Jag skulle också rekommendera att inte använda sig av en IDE så länge man jobbar med små projekt. Man lär sig mycket av att få jobba direkt med kompilatorn och göra egna script och make filer för hur ett projekt ska byggas. En vanlig texteditor som Atom fungerar alderles utmärkt. Om man sedan snöar in på något specifikt språk kan man börja fundera på en IDE som passar just det. Min personliga favorit är vim vad jag än gör.

Permalänk
Medlem

Jag tror att det är bra att välja ett språk som har en stark community och god dokumentation och sedan köra på det.

Att börja snirkla in på massa olika har inte varit supereffektivt för min del iaf

Vill dock slå ett slag för Elm som jag gillar. Kan dock vara marigt att gå på funktionella språk till en början, men det kan vara värt att klättra över den höga tröskeln!

Permalänk
Medlem
Skrivet av Stefflo:

Om du exempelvis hoppar in på PLC-next från Phoenix Contact så kan du använda de vanligaste högnivåspråken såsom C, Python, Java och Simulink och även blanda dessa fritt i samma program men även vanlig PLC-kod om man nu är van vid det.
Ett nytt tänk får man väl säga då det också är mycket enklare att hitta en C-programmerare än en PLC-programmerare idag.

Tack det visste jag inte om.
Jag tänker mig att oftast så skriver man väl inte från scratch? Brukar man inte nyttja färdiga block och sedan ändra variabler och eventuellt lägga till någon funktion. Tex att man redan har färdiga block på tex standard conveyor osv. Kan man konvertera då också eller öppna ett färdig program i Phoneix Contat?

Permalänk
Datavetare
Skrivet av skyw00lker:

Tänker ge mig in i språkkriget också.

Python är det språk man ska börja i, alternativt något helt funktionellt språk.

Hello World i python

print("Hello World")

Hello World i Java/C#

public ... class

void main ...
console ...

Vad exakt får man ut av att ha all denna boilerplate kod ni som förespråkar C#/java/C++

Då TS verkar kommit till insikt att starta med Python3 (ett lysande val om man trivs med dynamiskt typade språk) kan vi gå lite vid sidan av rälsen...

Det du kallar "boilerplate" är verkligen bara just det när man skriver triviala program och inte behöver/önskar bra stöd från verktyg i form av träffsäker Intellisense, eliminering av uppenbara typbuggar direkt vid kompilering, möjlighet till avancerad statisk analys för att hitta mindre uppenbara buggar (men ändock buggar).

Finns ingen fördel alls med Rust över Python3 här, den förra är bara lite mer skrivande

fn main() { println!("Hello World!"); }

Magin kommer så fort man gör något som sträcker sig lite utanför det triviala

Att upptäcka data-race buggar vid kopiering är unikt för Rust än så länge (men finns verktyg som kan upptäcka vissa sådana fall i många av de "stora" statiskt typade språken som C, C++ etc). Python skulle gladeligen köra program med den här typen av buggar, man får snällt försöka förstå varför saker blir fel ibland...

// Non-atomic reference counter use std::rc::Rc; fn main() { let a_number = Rc::new(42); let second_ref_to_number = a_number.clone(); // "move" means ownership of captured variables is moved into the // closure // Won't compile because std::rc::Rc does not implement "trait Send" // i.e. it is not "thread safe" let thr = std::thread::spawn(move || { println!("In thread, number is {}", second_ref_to_number); // second_ref_to_number goes out of scope here, decrement // ref-count }); println!("In main, number is {}", a_number); thr.join().unwrap(); }

Går det hela att lösa t.ex. med en mutex (just detta specifika fall går även att lösa med en atomär referensräknare, men det är inte poängen här)

// Atomic reference counter use std::sync::Arc; fn main() { let a_number = Arc::new(42); let second_ref_to_number = a_number.clone(); // "move" means ownership of captured variables is moved into the // closure let thr = std::thread::spawn(move || { println!("In thread, number is {}", second_ref_to_number); // second_ref_to_number goes out of scope here, decrement // ref-count }); println!("In main, number is {}", a_number); thr.join().unwrap(); }

Andra fördelar med "boilerplate" är att kompilatorn kan göra optimeringar baserad på statisk typ, t.ex. lagra poster "by-value" i arrayer/vektorer i stället för att ha pekare ("by-reference"). Det är mycket mer CPU-cache vänligt att hålla data "by-value" (finns självklart avvikande fall, men de är väldigt sällsynta och hanteras även de minst lika effektivt i "boilerplate" språken).

Gillar själv Python, även om de verkligen gjorde en rejäl dynghög av Python2 vs Python3 övergången. Men använder det bra för småsaker, har haft ett par projekt som startat små i Python och som rejält kantrat när de användes mycket -> fler saker lades till -> vid >100k rader Python börjar det blir allt annat än roligt. Är inget problem att hantera projekt med miljontals rader kod i "boilerplate" språken, på den skala är den hjälp man får från statisk typning och mer formell struktur ovärderlig!

För något som ska lära sig programmera är ovan nästan alltid irrelevant, men det finns väldigt bra anledning varför Python är populärt i utbildning och som klister till stora prestandakritiska komponenter skrivna i t.ex. C++ (machine learning hamnar väldigt mycket i den klassen).

Permalänk
Medlem
Skrivet av Elektron:

Tack det visste jag inte om.
Jag tänker mig att oftast så skriver man väl inte från scratch? Brukar man inte nyttja färdiga block och sedan ändra variabler och eventuellt lägga till någon funktion. Tex att man redan har färdiga block på tex standard conveyor osv. Kan man konvertera då också eller öppna ett färdig program i Phoneix Contat?

Du kan tanka hem färdiga funktioner även en del färdiga testprogram. Man kan även lägga ut egna och antingen ge bort eller sälja sina programsnuttar. Det finns en shop i deras community som man kan registrera sig på.

Du kan tanka hem mjukvaran från Phoenix hemsida, du behöver konfigurera den lite och sen är det bara att tanka hem.
https://www.phoenixcontact.com/online/portal/se?uri=pxc-oc-it...

Den är gratis så länge du inte ska använda safety eller matlab simulink då den kostar. Kör du safetybridge till den så är det ett eget program du behöver.

Du kan också gå in på deras egen community och läsa mer om detta om du är nyfiken.
https://www.plcnext-community.net/en/

Jag har jobbat på Phoenix men inte nu längre men vill du ha mer info så kan jag absolut hjälpa dig komma i kontakt med rätt folk. PLC:n i sig är riktigt kompetent och går även att bygga ihop med deras äldre system och även vidare med safety via profisafe eller safetybridge som då inte heller kräver en safetyplc. Det finns även inbyggd OPC-UA server direkt inbyggd i plc:n.

Jag är ingen programmerare själv även om jag har övergripande koll och även lite kunskap men tyvärr inte på djupet.

Här är en liten videosnutt om du vill se snabbt vad du kan göra.
https://youtu.be/rtq8FIkhwJc

Skicka PM så kan jag hjälpa dig med personer och annat om du är intresserad.