Gå til innhold

ProgrammeringsBaren! Småprat, om det du elsker!


Anbefalte innlegg

Videoannonse
Annonse

Koden min er sjitten:

Klikk for å se/fjerne innholdet nedenfor

#include <iostream>
using namespace std; 
long long mod;  
int divs(long long); 
int antallDivs; 
int divGrense = 200; 
int main()
{ 
long long sup = 0LL; 
long long i = 0LL;
while(1)
	{
		i++;  
		sup = i + sup; 	
		if (divs(sup) == 1)
		{
			cout << "PARTY!!!!\n"; 
			cout << sup << "\n"; 
			break; 
		}
	}
return 0; 

}
int divs(long long numb)
{
antallDivs = 0; 
mod = 1LL; 
while(mod < numb)
{
if (numb % mod == 0 ) 
	{
		antallDivs++; 
	}
		mod++; 

} 
if (antallDivs > divGrense )
{
	cout << antallDivs << "\n"; 
	return 1; 
}
	return 0; 
}

[/sKUL]

Lenke til kommentar

CPython fungerer LANGT IFRA på samme måte som JVM eller CLR

forskjellen sier du?

 

CPython kompilerer programmet til python bytecode, som deretter oversettes av VM-en run-time

JVM og CLR derimot kompilerer først til et mellomspråk (Java byte code, og Intermediate Language) som deretter kompileres til native code når programmet er i gang

Hva er forskjellen? stort ytelsessprang, pluss at språkene kan kommunisere direkte med annen native code uten et lag i mellom. derfor støtter både java og C# kommunikasjon med C biblioteker (en om den er dårligere i Java en i C# på grunn av at JVM ikke alltid har fungert på denne måten)

 

Programmets minne vil også bli lagt på heap, og ikke i stack. Forskjellen er at stack minne vil bli effektivisert fordi det ofte vil ligge i prosessorens cache, som er betydelig raskere en RAM (derfor en har volatile nøkkelordet i C# fordi dette kan skape problemer med multi-threading)

 

Hvorfor velge python som general purpose språk?

hvorfor?... :cry:

hvorfor ikke Java eller C#? de er mye mer effektive, flere bibliotek tilgjengelig, og sluttproduktet er mye mer effektivt...

 

Jeg kan ikke se noe annet en akademiske årsaker til å velge python.

Lenke til kommentar

Kjære deg, jeg vet da forskjellen på stack og heap.

 

Jeg tenkte på hva som skjer med CLR og JVM i forhold til dynamisk språk. Både Microsoft og Sun jobber hardt for å tilpasse plattformene sine til dynamiske språk.

 

Bare fordi du ikke forstår dynamiske språk betyr det ikke at de ikke har sin plass.

Lenke til kommentar

Ok, et eksempel fra virkelige verdenen:

VB6: støtter dynamisk typing, og variabel deklerasjon er ikke nødvendig.

Du kan derimot prøve å telle antall VB filer som inneholder Option Explicit (som gjør variabel deklerasjon nødvendig) og som bruker statisk typing, fremfor dynamisk.

 

Dette er nok de aller, aller, aller fleste.

Så i et språk hvor du har valget: dynamisk, eller statisk typing, hva ville du valgt?

Statisk typing krever at programmereren tilegner en variabel en spesiell funksjon (god programmeringsskikk) og at variabelen må deklareres før bruk (også god programmeringsskikk)

Dynamisk typing er veldig kjekt når du hater jobben din og alle andre som skal lese koden i ettertid.

 

Jeg vet det har nytteområder, men til vanlige tellere, objekter og normal programmering, har det ingenting i et program å gjøre.

 

Jeg vet .NET har fått en ekstra dynamisk typing utover object datatypen, men denne er mer beregnet for bruk med LINQ og databaser.

 

Ingen hevder at alle aspekter ved programmet bør bruke dynamisk typing.

Dessuten er fortsatt variabel deklerasjon påkrevd i C#

 

Så generelt sett: et språk bør støtte dynamisk typing, men dynamisk typing er ikke nyttig i alle sammenhenger, det fører til feller for programmereren og oppfordrer til dårlig programmeringsskikk.

 

edit: jeg føler meg litt som et troll i dette forumet :S

Endret av GeirGrusom
Lenke til kommentar

Wow, har aldri sett en så hardbarka motstander av dynamisk typing før. Er det eneste grunnen til at du ikke liker python, eller er det andre grunner som går på funksjonaliteten til språket? Hva er f.eks feil med koden til steingrim i den PE-løsningen? Det er jo en veldig kort, konsis, lettlest og elegant måte å løse det på, no? Kan du skrive den "bedre" i C#, når "bedre" betyr de tingene jeg nevnte over?

 

Hvorfor skal man velge python over C#? Til rask prototyping av algoritmer, design, rammeverk osv og til små enkle applikasjoner er det gjerne raskere og enklere å velge typiske scriptespråk som python, bl.a. pga. dynamisk typing og også fordi de gjerne er litt mer high level. Hastigheten spiller jo ikke så stor rolle, da hadde man programmert alt i C og assembler og ikke treige språk som C# og Java. At python er litt treigere enn C# igjen spiller jo ingen rolle til de fleste ting. Mange foretrekker da å skrive koden raskere og enklere. Python er hvertfall bra nok for google som har myyye python-kode i kodebasen sin, og de er jo flinke i det de driver med.

 

Men det er selvfølgelig helt greit at du foretrekker C#, men jeg kan ikke si jeg har sett noen gode argumenter mot python som språk eller dynamisk typing. Hastighetsargumentet mot dynamisk typing spiller som sagt ikke så stor rolle for de fleste ting. Det at det oppfordrer til dårlig programmeringskikk stemmer jo heller ikke helt. Typene må tross alt stemme hvis ikke så får du error under runtime. Det er vel kanskje den største ulempen, at du får error runtime istedetfor compiletime hvis typene ikke stemmer, men det er jo ikke sånn at det oppfordrer til dårlig programmeringsskikk.

Lenke til kommentar
Det at det oppfordrer til dårlig programmeringskikk stemmer jo heller ikke helt. Typene må tross alt stemme hvis ikke så får du error under runtime. Det er vel kanskje den største ulempen, at du får error runtime istedetfor compiletime hvis typene ikke stemmer, men det er jo ikke sånn at det oppfordrer til dårlig programmeringsskikk.

 

Runtime error ja, dette kan føre til at programmet ikke tryner før kunden får tak i det, som er en ganske stygg sak og kan ofte være vanskelig å debugge.

Dessuten burde det være streng straff mot å lage et språk der det ikke er obligatorisk å deklarere variabler før de brukes, hvorfor? hva hvis du feilstaver en variabel sent i koden? du får ikke compile feil, og programmet vil kanskje ikke reagere på det i det hele tatt.

 

Begge disse aspektene ved python er fallgruver, og ikke noe annet.

 

Dynamisk typing bør være et pluss til et språk, ikke det eneste alternativet.

 

Når det gjelder koden til steingrim, så har jeg ikke så mye å si egentlig, den er elegant, og gjør oppgaven, men er dette på grunn av dynamic typing, eller syntaksen til Python?

 

Det er mye jeg ikke kan om Python, men etter det jeg ser, så bruker ikke steingrim noen funksjoner som ikke er tilgjengelig i C#.

yield f.eks.

Klikk for å se/fjerne innholdet nedenfor
using System;
using System.Collections.Generic;

namespace NaturalNumbers
{

public class NaturalNumbers
{
	public static IEnumerable<int> triangle_numbers(int upto)
	{
		int count = 1;
		int number = 1;
		for (int i = 0; i < upto; i++)
		{
			yield return number;
			count++;
			number += count;
		}
	}
	public static void Main()
	{
		foreach (int i in triangle_numbers(100))
			Console.WriteLine(i.ToString());
		Console.ReadKey();
	}
}
}

 

Men jeg må ærlig talt si at C# ser mye mer elegant ut :) men det er vel en smakssak.

Lenke til kommentar
Kan ikke dere fortsette på "Trenger litt hjelp til valg av programeringsspråk"..... nai for den er stengt ja, mon tro hvorfor?

 

Ikke knus Programmeringsbaren med deres krangling.

Lag en ny forum tråd for denne diskusjonen eller kom dere ut!

Jeg krangler ikke med noen. Jeg småprater..

 

Runtime error ja, dette kan føre til at programmet ikke tryner før kunden får tak i det, som er en ganske stygg sak og kan ofte være vanskelig å debugge.

Dessuten burde det være streng straff mot å lage et språk der det ikke er obligatorisk å deklarere variabler før de brukes, hvorfor? hva hvis du feilstaver en variabel sent i koden? du får ikke compile feil, og programmet vil kanskje ikke reagere på det i det hele tatt.

 

Begge disse aspektene ved python er fallgruver, og ikke noe annet.

Ja, jeg sa jo at dette var den største ulempen. Men det er mange fordeler som veier opp.

 

Når det gjelder koden til steingrim, så har jeg ikke så mye å si egentlig, den er elegant, og gjør oppgaven, men er dette på grunn av dynamic typing, eller syntaksen til Python?

Det er vel litt pga begge deler. Dynamisk typing har jo innflytelse på syntaksen.

 

 

Det er mye jeg ikke kan om Python, men etter det jeg ser, så bruker ikke steingrim noen funksjoner som ikke er tilgjengelig i C#.

yield f.eks.

Klikk for å se/fjerne innholdet nedenfor
using System;
using System.Collections.Generic;

namespace NaturalNumbers
{

public class NaturalNumbers
{
	public static IEnumerable<int> triangle_numbers(int upto)
	{
		int count = 1;
		int number = 1;
		for (int i = 0; i < upto; i++)
		{
			yield return number;
			count++;
			number += count;
		}
	}
	public static void Main()
	{
		foreach (int i in triangle_numbers(100))
			Console.WriteLine(i.ToString());
		Console.ReadKey();
	}
}
}

 

Men jeg må ærlig talt si at C# ser mye mer elegant ut :) men det er vel en smakssak.

Det er tydeligvis en smakssak ja hvis du helt alvorlig syns det der er penere enn python.

Lenke til kommentar
Kan ikke dere fortsette på "Trenger litt hjelp til valg av programeringsspråk"..... nai for den er stengt ja, mon tro hvorfor?

 

Ikke knus Programmeringsbaren med deres krangling.

Lag en ny forum tråd for denne diskusjonen eller kom dere ut!

 

Vi krangler da ikke, dette er småprat om det vi elsker.

 

Men til saken, så har jeg egentlig sagt mitt.

 

Men jeg kunne tenke meg å høre noen fordeler med dynamisk typing, for jeg klarer ikke å finne noen.

Lenke til kommentar
Runtime error ja, dette kan føre til at programmet ikke tryner før kunden får tak i det, som er en ganske stygg sak og kan ofte være vanskelig å debugge.

Dessuten burde det være streng straff mot å lage et språk der det ikke er obligatorisk å deklarere variabler før de brukes, hvorfor? hva hvis du feilstaver en variabel sent i koden? du får ikke compile feil, og programmet vil kanskje ikke reagere på det i det hele tatt.

 

Begge disse aspektene ved python er fallgruver, og ikke noe annet.

Om du går til respekterte "representanter" i Python-verdenen, får du ganske kjapt forklart at testcases er eit totalt must før du evt. åpner ein applikasjon (enten offentleg eller til ein kunde). Sit sjølv i Django store deler av dagen, og testing i dette rammeverket er veldig enkelt og greitt (dok).

 

Sjølvsagt, du inngår nokre kompromiss ved å bruke eit dynamisk, høgnivåspråk som Python, men utviklingstida er særdeles kortare enn kva du finn i f.eks. Java, C# og andre statiske språk, og i mange samanhenger er dette heilt og fullt vesentleg.

Lenke til kommentar
Kan ikke dere fortsette på "Trenger litt hjelp til valg av programeringsspråk"..... nai for den er stengt ja, mon tro hvorfor?

 

Ikke knus Programmeringsbaren med deres krangling.

Lag en ny forum tråd for denne diskusjonen eller kom dere ut!

 

Vi krangler da ikke, dette er småprat om det vi elsker.

 

Men til saken, så har jeg egentlig sagt mitt.

 

Men jeg kunne tenke meg å høre noen fordeler med dynamisk typing, for jeg klarer ikke å finne noen.

Tja, det er lettere og raskere å slenge sammen noe kode som funker. Det tillater syntaxen til språket å bli mer clean og/eller fleksibel, som f.eks python. Lettere å gjenbruke kode som ellers ikke hadde kommet seg gjennom typesjekkern. Hvis du plutselig finner ut at du vil bytte type så slipper du å forandre kode alle steder der du skulle bytte type osv osv..

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...