Bästa programspråk för störst kompatibilitet?

Permalänk
Medlem

Bästa programspråk för störst kompatibilitet?

När man väljer programmeringsspråk för applikationer (och system), så jag fokusera något där applikationen man senare kompilerar inte är beroende av en massa tillägg för att kunna köras.

Som exempel, så lattjade jag lite med Visual Basic 6 för länge sen. Men för att köra såna program behövdes ofta sk VBRun stöd eller MSVC/MSVB stöd i Windows. Numera finns VB.net, men även här förstår jag att man måste ha- eller hämta rätt sorts .Net stöd (och version) installerat i Windows för att VB.net applikationer ska kunna köras. Samma lär väl då gälla C#, F# och en del andra? Även Python, som är så enkelt, är ju egentligen script som körs genom en kodtolkare/kompilator, som då måste vara installerad på systemet eller så kan inte koden exekveras.

Jag vill kunna göra en exe-fil och skicka till i princip vem som helst som har windows 95 och uppåt, och den personen ska kunna köra det utan större problem.
Om man väljer programspråk med den tillämpningen som en av de högst värdefulla parametrarna, vilka språk rekommenderas i allmänhet då?

Tackar för tips

Permalänk
Medlem

Jag skulle nog säga Java, kräver att användaren har java installerat men fungerar i stort sett med vilket OS som helst

Visa signatur

Stationär: Core i9 13900k | Asus X790 ROG Strix Gaming-F | 32GB DDR5 | RX 7900 XT | Lian Li PC-O11 dynamic evo
Laptop: Macbook Air | Apple M1

Permalänk
Medlem

Jag valde Qt framework p.g.a. av denna "dependency hell" samt fördelen av cross platform.
Vill inte ge användaren en massa krav på 3:e part bibliotek och annan framework som ofta kan strula till den.
Har för mig att man kan baka in dependencies i .Net och idag finns det även bättre stöd för linux (Vilket inte var fallet när jag var i din sits och ville hitta en bra framework)

Java vill jag inte ens tänka på Avskyr som användare när programmet jag installerar kräver Java.

Edit: I Qt kan du både skicka med samtliga DLL filer, så att hela ditt program kan köras från en mapp (ingen install krävs), eller att du bakar in allt i en .exe fil.
Vilket som så behöver användaren bara ladda ner programmet och köra utan att installera andra dependencies.

Permalänk
Hedersmedlem

Frågan är hur många finesser man behöver. Om man klarar sig med det klassiska win32-api:et och c kan man bygga väldigt små applikationer som fungerar som du vill, men annars gäller det att bygga in alla beroenden i exe-filen (som då i regel blir stor) eller hålla sig till något som alla redan har.
Jag tror att .net 1.x är inkluderat i windows95, så om det räcker kan det vara ett alternativ.

Permalänk
Inaktiv

Applikationer på konsumentdatorer är förlegat.
Det finns bara några få scenarior då man kan köra sånt.
Applikationer med väldigt höga krav på input/utput, rörliga bilder är ett bra exempel.
Väldigt små enkla lösningar för ett väldigt fåtal personer som ofta ska bearbeta någon data lokalt.
Serverapplikationer.

Så släng upp en webbserver, skapa en sida där och kan utan problem göra en lösning som fungerar på typ alla populära plattformar som finns idag utan någon ändring. Och inte nog med detta, så lär lösningen om du ej har använt dig av väldigt komplicerade tekniker fungera på den populäraste hårdvaran om 20år.

När man kodar applikationer idag för väldigt få personer så är C# inom windows ett av de vanligaste, det går att göra applikationerna väldigt bra och enkelt. Ska man göra så att även personer med andra system, ja då är det att fundera på webblösningen.

*edit*
Pluggins etc är undantag, likaså program för viss typ av databearbetning. Även om det vid databearbetning går emot webblösning.
Det är mer väldigt systemknutna verktyg som kan vara smidigt med att ha lokalt, ska filer, databaser etc uppdateras, så blir det knepigt att blanda in en webblösning.

Webblösningar har sedan en drös fördelar, man har bra koll på ens program, man ser alltid till att alla har det senaste och man vet precis vilken spridning det får. Folk är dessutom livrädda för att installera program och det känns för vissa tryggare att slippa detta.
Även om det ej är så säkert att skicka upp ens word/excelfiler etc på någon website.

Permalänk
Medlem

Kolla upp Xamarin, ett crossplatform ramverk som ägs av Microsoft.
Man skriver all kod i C# och kan bygga applikationer till Windows/MacOS/iOS/Android!

Permalänk
99:e percentilen

JavaScript (webbapplikationer) kan köras på i princip samtliga plattformar som används av människor.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem

Du kan även spana in Kotlin.

Permalänk
Medlem

För att fortsätta på det Alling skrev ovan.

https://electronjs.org/ kan vara vettigt. Används av stora aktörer som Slack, Discord, VS Code, Atom, med flera.

Permalänk
Medlem

Får tacka för tips så här långt.
Bara för att förtydliga, så är jag inte i behov av cross-platform eller überkompatibla grejor. Så länge man håller sig på samma plattform så är jag nöjd. Att sen porta program till andra plattformar är ett senare steg - iaf för mig. Jag menar, några enstaka beroenden måste man ändå acceptera. Annars är det väl bara Basic-prompt á la 1975 som gäller.

Permalänk
Medlem

.Net framework 3.x verkar smått lovande, så länge man inte måste utanför Windows iaf. Stöd för det levereras inbyggt i Windows XP, Vista, 7, 8, 8.1, 10, Server 2003, Server 2008, Server 2008 R2, Server 2012, Server 2012 R2, Server 2016, Windows Mobile och Windows Embedded CE. (enligt följande Wikipedia-artikel). Dags att kolla om man kan hitta en kopia av MS Visual Studio Express 2008 dårå ..

Jag hade väntat mig rekommendationer till C++ som jag trodde tillhörde de mest oberoende formaten. Hade jag fel i det?

Permalänk
Medlem

Nu nämner du inte specifikt vad du tänkt göra men kolla upp en äldre version av Delphi (5-7) och även Lazarus.

Pascal kompilatorer som gör vad du önskar, dvs skapa helt fristående EXE-filer helt utan dependencies och rullar på allt från W9x till W10.

Vill du hellre knappa BASIC så kolla upp Power Basic som gör samma sak.

Kanske inte så "hippa" språk nuförtiden men så länge de löser ditt problem spelar det knappast någon roll.

Permalänk
Medlem
Skrivet av KeyCat:

Nu nämner du inte specifikt vad du tänkt göra men ...

I just mitt eget fall är det mest att automatisera göromål på datorn så mycket som möjligt. Istället för att leta små utilities online som gör det man behöver. Har ingen server-park men jobbar intensivt med Workstation-jobb inom media och är i starkt behov att repetitiva saker saker ska gå snabbt. Och även att på den vägen lära sig mer och kunna skicka ut små verktyg eller program till andra, främst medarbetare. Utan att för den sakens skull ha några aspirationer bli 'seriös' programmerare. Jag tror man bör ha talang för det.

Skrivet av KeyCat:

... kolla upp en äldre version av Delphi (5-7) och även Lazarus.

Pascal kompilatorer som gör vad du önskar, dvs skapa helt fristående EXE-filer helt utan dependencies och rullar på allt från W9x till W10.

Pascal ja .. det tänkte jag inte på. Tog just hem Lazarus och ska kolla lite mer på det.

Permalänk
Hedersmedlem
Skrivet av Dooley:

Jag hade väntat mig rekommendationer till C++ som jag trodde tillhörde de mest oberoende formaten. Hade jag fel i det?

Det är en god kandidat, men även den har vanligtvis runtime-filer som behövs hos slutanvändaren. Du har kanske råkat ut för liknande?

(I det här fallet är inte rätt version av microsofts miljö installerad).
Dessutom har c/c++ inget inbyggt sätt att skapa grafiska användargränssnitt och liknande, så om man behöver sådant får man hålla sig till windows-api:et eller skicka med fler dll-filer*.

*Ett alternativ till dll-filer är som sagt att bygga in all funktionalitet i exe-filen (statisk länkning), men då får man ofta väldigt stora exe-filer istället.

Permalänk
Medlem
Skrivet av anon159643:

Applikationer på konsumentdatorer är förlegat.

Japp och stordatorn är död.

Permalänk
Inaktiv
Skrivet av aluser:

Japp och stordatorn är död.

Och internet är bara en fluga.
Detta med att ha en server och klientapplikationer håller också på att försvinna, det går emot att köra allt i webbläsaren utan att något alls är installerat. Det är bara se på vanligt folk, vilka applikationer har de idag installerade på datorn förutom spel?
Nu är Windows väldigt mycket mer bloatad idag än förr, men det är inte mycket folk behöver installera.

Ska vanligt folk testa någon ny tjänst för något så föredrar de också bara att surfa in på en webbsida än att installera ett program på sin dator.

Det finns som sagt undantagsprogram som jag nämnde lite, men ska man göra något litet generellt som man ska sprida så blir en webblösning ofta så mycket bättre. Ta bantningsprogram, för 20 år sedan fanns det en drös att installera på sin dator, idag så vill helt vanligt folk ha en websida som de surfar in på istället.

Skrivet av Dooley:

I just mitt eget fall är det mest att automatisera göromål på datorn så mycket som möjligt. Istället för att leta små utilities online som gör det man behöver. Har ingen server-park men jobbar intensivt med Workstation-jobb inom media och är i starkt behov att repetitiva saker saker ska gå snabbt. Och även att på den vägen lära sig mer och kunna skicka ut små verktyg eller program till andra, främst medarbetare. Utan att för den sakens skull ha några aspirationer bli 'seriös' programmerare. Jag tror man bör ha talang för det.
Pascal ja .. det tänkte jag inte på. Tog just hem Lazarus och ska kolla lite mer på det.

Powershell är mer eller mindre standard inom windows för detta och powershell lär inte försvinna från windows de närmsta 10åren. Nackdel, väldigt knepig syntax enligt mitt tycke. Och konvertera ett powershellscript som använder en massa .Net komponenter i windows tar nästan lika tid att konvertera till Linux, MacOS som det tar att skriva ett nytt script från första början.

Ibland kör jag med Visual Basic script och bat filer, det handlar om att göra det enklaste för varje lösning. Powershell är spärrad för excekvering av script som standard, .Vbs filer kan få systemansvariga att skita ner sig och batch så har de för liten funktionalitet för allt.
.Vbs var väl typ det vanligaste virusen för 20år sedan, där folk körde dessa utan att fundera efter före.

Permalänk
Medlem
Skrivet av Dooley:

I just mitt eget fall är det mest att automatisera göromål på datorn så mycket som möjligt. Istället för att leta små utilities online som gör det man behöver. Har ingen server-park men jobbar intensivt med Workstation-jobb inom media och är i starkt behov att repetitiva saker saker ska gå snabbt. Och även att på den vägen lära sig mer och kunna skicka ut små verktyg eller program till andra, främst medarbetare. Utan att för den sakens skull ha några aspirationer bli 'seriös' programmerare. Jag tror man bör ha talang för det.
Pascal ja .. det tänkte jag inte på. Tog just hem Lazarus och ska kolla lite mer på det.

Om det nu är automatisering på Windowsmaskiner du är ute efter så borde väl Batch-script vara något att kika på.
Det blir ju ingen grafisk applikation men det är ju sällan något som behövs vid automatisering.

Kräver ingen kompilering och bör fungera utan problem på alla versioner av Windows du rimligtvis kommer stöta på.

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Medlem

@Dooley: Om jag förstått det rätt, så kan man i senaste Java (version 10) ta med alla dependencies och allt så att de som kör filen inte behöver ha något installerat för att lyckas köra den.

Permalänk
Medlem

Om det är bara små program kanske det också fungerar bara med små script? Testa skriva i bash kanske? Kräver ju bara ".bat", nada installation typ?

Permalänk
Medlem
Skrivet av anon159643:

Powershell är mer eller mindre standard inom windows för detta och powershell lär inte försvinna från windows de närmsta 10åren. Nackdel, väldigt knepig syntax enligt mitt tycke.

Skrivet av noMad17:

Om det nu är automatisering på Windowsmaskiner du är ute efter så borde väl Batch-script vara något att kika på.
Det blir ju ingen grafisk applikation men det är ju sällan något som behövs vid automatisering.

Kräver ingen kompilering och bör fungera utan problem på alla versioner av Windows du rimligtvis kommer stöta på.

Jodå, jag kan en del batch-grejor, DOS-bat, QBasic, lite Powershell m.m. Det är därifrån jag kommer och kikar på lite vidare horisont bara. Under många år körde jag backup via Robocopy, men även där är det lite begränsat. Man kan inte lägga till- eller ta bort funktionalitet som man senare växer i eller ur.
I mitt fall vill man inte köra exakt samma process varje gång, utan det skiftar ofta lite grann i parametrar osv, och då måste man in i koden och rota runt och det tar massa tid och ork osv. Eller så får man göra Choice-lista, där batchen frågar användaren vilket av X antal alternativ man vill köra. Men även där så är det fasta alternativ man måste välja.
Tyckte bara det kändes mer adekvat med ett formulär i ett applikations-GUI där man kan skriva in, välja eller eller bocka i rutor för alla alternativ man vill ha, varje gång. Plus att möjligheterna till att etablera specifika nätverksanslutningar oftast verkar bättre om man kör via program. Kändes som att 'det är väl lika bra' med att göra kompilerad applikation, en erfarenhet som som dessutom kan användas till lite annat än systemautomation. Kändes som att kompilerad applikation var Powershell Deluxe, typ. Powershell kommer också i olika versioner, så inte ens där är det helt oberoende.

Permalänk
Hedersmedlem
Skrivet av anon159643:

Det är bara se på vanligt folk, vilka applikationer har de idag installerade på datorn förutom spel?
Nu är Windows väldigt mycket mer bloatad idag än förr, men det är inte mycket folk behöver installera.

Inte för att säga emot, men hur mycket brukade folk egentligen ha installerat? Separata e-postklienter har kanske försvunnit på många håll, men spel och office-paketet lever väl ungefär som förr? När det gäller bantningsprogram och liknande kan jag tänka mig att de främst har flyttat till telefoner, men i många fall blir de väl snarare plattformsspecifika appar där snarare än webbapplikationer?

Permalänk
Medlem
Skrivet av anon159643:

Applikationer på konsumentdatorer är förlegat.
Det finns bara några få scenarior då man kan köra sånt.
Applikationer med väldigt höga krav på input/utput, rörliga bilder är ett bra exempel.
Väldigt små enkla lösningar för ett väldigt fåtal personer som ofta ska bearbeta någon data lokalt.

Vet inte var du plockar din statistik ifrån (?) men vi verkar leva i två olika världar.

Det finns massor med företag (och vanliga personer med för den delen) som kör program lokalt på datorn för diverse ändamål.

För egen del så kör jag inga program i "molnet" av olika skäl. Bland annat för att 99% av de program jag använder till utveckling av mjukvara/elektronik inte existerar on-line men ett av de större skälen är att jag av säkerhetsskäl aldrig skulle ladda upp egna eller klienters projektfiler någonstans.

Skulle mina kunder få reda på det eller om något kommit på villovägar så hade jag kunnat packa ihop. Nu arbetar jag inte på med "NASA projekt" men det spelar ingen roll, industrispionage är ett faktum!

Tredje skälet jag kan komma på är att du får mindre/ingen kontroll själv. Vad jag menar med det är att risken finns att företaget helt plötsligt får för sig att ta bort en specifik funktion som du använder. Med ett lokalt installerat program så vet jag att det är statiskt.

Visst Pelle Jönsson som surfar, spelar, skriver några mail i veckan och något brev om året klarar sig galant med Googles gratis tjänster etc. Förnekar inte att bra moln applikationer finns och används men vanliga program är långt ifrån döda.

Många mjukvaruföretag vill gärna få över dig till deras on-line versioner och dödar sakta men säkert deras äldre program. Detta för att de insett att de tjänar mer pengar på SaS och får ett konstant inflöde av intäkter genom månatliga/årliga betalningar av kunderna.

PS: Att sätta upp en web lösning för de ändamål som TS beskriver är som att döda mygg med en haubits

Permalänk
Medlem

Pascal verkar ju lite sådär enkelt som Visual Basic. Syntaxen är mer likt vardagsspråk, typ show.msgdialog("Hello world!"). Inte som Java, C# och C++ som jag upplever som snirkelbracketar överallt och syntaxen liknar inga ord utan mer som en massa konstiga kombinationer av förkortningar och bokstäver. Jag tror det påverkar, vad man upplever som tilltalande.

Pascal verkar enkelt men fullt kompetent för det mesta man kan behöva, åtminstone för mina områden.
Trodde jag .. ända tills jag fick veta att 'riktiga män' minsann aldrig skulle befatta sig med Pascal! Vad fasen är detta, haha!
Artikel-länk
Wikipedia-artikel

Permalänk
Medlem
Skrivet av Dooley:

Pascal verkar enkelt men fullt kompetent för det mesta man kan behöva, åtminstone för mina områden.
Trodde jag .. ända tills jag fick veta att 'riktiga män' minsann aldrig skulle befatta sig med Pascal! Vad fasen är detta, haha!
Artikel-länk
Wikipedia-artikel

Programmerings språk kommer och går och det som är inne idag kommer att vara ute om några år (troligtvis inte Cxx som har blivit defacto i tex Linux och använts mycket i Windows genom åren).

Personligen bryr jag mig inte om vad som är inne/ute så länge det gör sitt jobb men jag är ingen PC mjukvaruutvecklare per se.

BASIC och Pascal har fått oförtjänat dåligt rykte genom åren (visst GW BASIC från 1985 sög). Det går lika bra att skriva strukturerade program i modern BASIC/Pascal som i många andra språk, de stöder också OOP.

För mig handlar det om att välja det bästa/enklaste verktyget för det problem man har. Tror inte det finns något "bästa språk" för allt.

Permalänk
Medlem
Skrivet av Dooley:

I just mitt eget fall är det mest att automatisera göromål på datorn så mycket som möjligt. Istället för att leta små utilities online som gör det man behöver.

För de så använder jag macroscheduler från mjt.net, kan även utökas med VB script om man vill. Kompilerar exe filer med eller utan gui, som även kan utföra tangentbord och mus-kommandon samt "screen-recognition"

Permalänk
Medlem

C# är ju sjukt enkelt jämfört med Pascal, framförallt så är Pascal dött.
Vill du bara nå Windows-klienter är C# oerhört kraftfullt och smidigt. Ska du nå andra OS men som också bara använder x86 kan C++ vara ett alternativ men gud så tidskrävande att koda i. Jag skulle säga att Kotlin/Java är prestanda-alternativet för multiplattform och Go eller Python det enklaste. Jag tycker det är riktigt knöligt med Powershell speciellt med rättigheter och exekveringsnivå, vissa saker fungerar remote vissa inte.

Permalänk
Medlem
Skrivet av KeyCat:

Programmerings språk kommer och går och det som är inne idag kommer att vara ute om några år ..

Personligen bryr jag mig inte om vad som är inne/ute så länge det gör sitt jobb men jag är ingen PC mjukvaruutvecklare per se.

Sprang på en en omröstning, gjord ifjol på Stack Overflow. 36000 personer från 157 länder röstade, de flesta män mellan 20-35 år. Top 10 älskade- respektive hatade språken/frameworks blev:

Most loved languages/frameworks:

  • Rust

  • Smalltalk

  • Typescript

  • Swift

  • Go

  • Python

  • Elixir

  • C#

  • Scala

  • Clojure

Most dreaded languages/frameworks:

  • VB6

  • VBA

  • Coffeescript

  • VB.Net

  • Matlab

  • Objective-C

  • Assembly

  • Perl

  • Lua

  • Hack

Hyfsat MS hat
(Källa)

Permalänk
Medlem
Skrivet av Mordekai:

C# är ju sjukt enkelt jämfört med Pascal, framförallt så är Pascal dött.

Nu handlade det ju om att kunna göra helt fristående EXE-filer helt utan några depencies och som fungerade på alla Windows versioner och mig veterligen går det inte med C# - rätta mig om jag har fel?

Sedan att Pascal är "dött" behöver inte innebära att det per automatik är dåligt, finns en hel del som fortfarande använder det

@Dooley: Har sett den undersökningen för några år sedan, intressant läsning

Permalänk
Medlem
Skrivet av Elgot:

Det är en god kandidat, men även den har vanligtvis runtime-filer som behövs hos slutanvändaren. Du har kanske råkat ut för liknande?
http://cureyoursystem.com/wp-content/uploads/2016/03/msvcr80-dll.png
(I det här fallet är inte rätt version av microsofts miljö installerad).
Dessutom har c/c++ inget inbyggt sätt att skapa grafiska användargränssnitt och liknande, så om man behöver sådant får man hålla sig till windows-api:et eller skicka med fler dll-filer*.

*Ett alternativ till dll-filer är som sagt att bygga in all funktionalitet i exe-filen (statisk länkning), men då får man ofta väldigt stora exe-filer istället.

Det är väl ändå sanning med modifikation. Vi länkar exempelvis curl, libpng, libjpeg, libSDL2, libjansson (etc) och har en binär på ca 5MB strippad (plus hundratusentals rader kod i vår egen applikation). Det beror ju helt på vad man drar in för bibliotek. I vårt fall rört det sig om en spelklient (Quake).

Jämför med en Electron-app som ska packa in hela Electron-ramverket. Ta Etcher som exempel; en simpel img-writer som väger in på 300MB (for real).

Visa signatur

Citera mig för svar.
Arch Linux

Permalänk
Datavetare

Störst kompatibilitet över alla tänkbara Windows-versioner är, med milsvid marginal över allt annat som föreslagits i denna tråd, statisk länkade C++ program.

Den statisk länkningen är den kritiska komponenten här, det tar bort alla beroenden förutom systemanropen mot Windows-kärnan, så självklart kommer det inte fungera om du använder OS-funktioner som inte finns i t.ex. Win95.

C++ har, med all rätt, haft ett rykte om sig att vara omodernt och komplicerat. C++ hade nog en rätt oviss framtid åren efter millennieskiftet. Det man ska vara medveten om är att "modern" C++, d.v.s. C++11/14/17 inte alls går att jämföra med tidigare C++-version (fanns egentligen bara två officiella versioner innan C++11, C++98 samt C++03 som typ ingen implementerade de första tio efterföljande åren...).

Svårt att riktigt se något som är möjligt i t.ex. C# som inte kan göra på mer eller mindre exakt samma sätt i C++17. Finns däremot en lång rad saker som är möjligt att göra i modern C++ som inget annat språk utom möjligen Rust är kapabelt till.

T.ex. är det nog bara modern C++ och Rust som inte bara kan hanterar minne automatiskt, de kan hanterar alla resurser automatiskt. Rust tvingar dig göra detta medan C++ gör det fullt möjligt att hantera det automatiskt, men vore inte C++ om du inte även har valet att skjuta huvudet av dig själv (Är dock ett val, följer man dessa riktlinjer är man skyddad).

Och givet ovan så är det viktigt att påpeka att är absolut inga problem att använda moderna C++ språkliga finesser samt det moderna standardbiblioteket. Går även fint att använda externa bibliotek bara de har stöd för statisk länkning, t.ex. boost.

En statisk länkad binär kommer lägga in alla beroenden i .exe filen, så att C++17 inte existerade på Win3.1 spelar ingen roll, programmet kommer ändå fungera där förutsatt att du bara använder Win32 APIer som fanns redan då.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer