LINUX.ORG.RU
ФорумTalks

Практическое сравнение языков


0

0

Дайте какую-нибудь прогу (обычную консольную, использующую только стандартные библиотеки, например на сишарпе или жабе) строчек на сто, а мы напишем на остальных известных нам языках (я например на питоне).

anonymous

А что там смотреть - по простоте, удобству и читабельности VB всё равно будет рулить

anonymous
()

Ага... нам дадут прогу, написанную знающим человеком на Си, а мы незная питона ее (прогу) на него (питон) попробуем переписать, переписать не получится и окажется что питон отстой.

ИМХО так сравнивать нельзя.

p_kolya
()
Ответ на: комментарий от anonymous

Не рулит VB, он не рулит. Простота там может быть показаться только для невидявшего ничего кроме бейсика человка показаться, читабельность там никакая вобще, удобство тоже низкое, по-удобству VB шумно сливает вобще.

p_kolya
()
Ответ на: комментарий от p_kolya

Не буду вас разубеждать. :) Должны же быть негры, кодящие на цэ-крест-кресте и скриптовой хне типа пЁрла. Ну и извращенцев использущих функциональщину тоже никуда не денешь...

anonymous
()
Ответ на: комментарий от anonymous

>А что там смотреть - по простоте, удобству и читабельности VB всё равно будет рулить

Дай прогу на VB, я перепишу на питоне.

anonymous
()
Ответ на: комментарий от anonymous

Готов поспорить, что этот тролль ни разу не видел в глаза VB и просто стебется.

anonymous
()
Ответ на: комментарий от anonymous

> Дай прогу на VB, я перепишу на питоне.

Ну покажешь ты допустим что программа станет меньше по объёму. От этого она не станет более читабельной и её не станет легче писать с нуля.

Вообще о чём можно разговаривать с людьми которые доказывают что что-то может быть _удобнее_ VB и егойного IDE... Нет таких языков, среди сколько-нибудь известных во всяком случае.

Ладно, первый и последний вопрос - "if a=b" удобнее чем "if a==b" или какое-нибудь "ifeq(a,b)" ?

anonymous
()
Ответ на: комментарий от anonymous

>>по простоте, удобству и читабельности VB всё равно будет рулить

да. но а)медленнее.

б)у ВБ возможностей меньше

г)Заплатят за нее меньше.

Lockywolf ★★★
()
Ответ на: комментарий от anonymous

>Ну покажешь ты допустим что программа станет меньше по объёму. От этого она не станет более читабельной и её не станет легче писать с нуля.

Таки давай прогу, не обязательно свою, но консольную, без нестандартных либ, строчек на сто или типа того, вот и увидим мы, что более читабельное. :)

anonymous
()
Ответ на: комментарий от Lockywolf

> медленнее

Это не критично. Скорее всего скорость и так упрётся в скорость HDD или сети.

> у ВБ возможностей меньше

А тебе они все нужны, эти возможности? Не верю.

> Заплатят за нее меньше.

А надо работать там, где от тебя нужно Решение Задачи, а не исходник на заданном языке. А то так если загоняться только по зарплате, тогда кроме ссы++ и пхп вообще ничего не надо.

anonymous
()
Ответ на: комментарий от anonymous

> Таки давай прогу, не обязательно свою, но консольную, без нестандартных либ, строчек на сто или типа того, вот и увидим мы, что более читабельное. :)

Консольный каменный век никому не нужен...

А так - накатай, скажем, простейший гуёвый чат по TCP. Два окошка - в одном ("сервер") текстбокс с номером порта, кнопка "ждать коннект" и текстбокс с собственно чатом. На втором ("клиент") тоже самое, только дополнительно текстбокс с IP "сервера". Должно работать не только в пределах одного компа, но и полноценно по сети.

Попробуй "асилить". Любой "правильный" язык, любая гуёвая библиотека...

anonymous
()
Ответ на: комментарий от anonymous

> А что там смотреть - по простоте, удобству и читабельности VB всё равно будет рулить

По простоте удобству и читабельности японские иероглифы всё равно будут рулить. Смысл иронии надеюсь ясен?

mutronix ★★★★
()
Ответ на: комментарий от anonymous

> "if a=b" удобнее чем "if a==b" или какое-нибудь "ifeq(a,b)" ?

ИМХО if a==b удобнее всего.

xnix ★★
()
Ответ на: комментарий от anonymous

>Консольный каменный век никому не нужен...

А серверное ПО у тебя тоже графическое? :))) Или все же демон отдельно, гуй отдельно?

>А так - накатай, скажем, простейший гуёвый чат по TCP. Два окошка - в одном ("сервер") текстбокс с номером порта, кнопка "ждать коннект" и текстбокс с собственно чатом. На втором ("клиент") тоже самое, только дополнительно текстбокс с IP "сервера". Должно работать не только в пределах одного компа, но и полноценно по сети.

Дай сначала исходники на VB, иначе разговор ни о чем.

anonymous
()
Ответ на: комментарий от anonymous

> Ладно, первый и последний вопрос - "if a=b" удобнее чем "if a==b" или какое-нибудь "ifeq(a,b)" ?

Зато не удобнее для компилятора, которому придется отслеживать условия вызова = и интерпретировать его нужным образом в зависимости от условий вызова.

mutronix ★★★★
()

В принципе, в LOR contest ни Java ни C# ни VB не засветились. А там вполне ничего задачка, и на сетевое взаимодействие, и на UI средней тяжести. И условия достаточно либеральные, позволяют использовать GUI тем, кому это удобно и чистую консоль тем, кому это удобно.

eugine_kosenko ★★★
()
Ответ на: комментарий от eugine_kosenko

>И условия достаточно либеральные, позволяют использовать GUI тем, кому это удобно и чистую консоль тем, кому это удобно.

А где написано, что чат можно консольный?

anonymous
()
Ответ на: комментарий от mutronix

> Зато не удобнее для компилятора, которому придется отслеживать условия вызова = и интерпретировать его нужным образом в зависимости от условий вызова.

Вот, в этом всё и дело. Такое ощущение, что ваши эти питоны и т.д. пишутся так чтобы было "удобно" компу, хотя комп железный, ему ну абсолютно до лампочки, что и как парсить. И пишется транслятор всего 1 раз, можно и напрячься и сделать так чтобы потом было удобно пользователям транслятора, которых будет всяко больше чем тех кто этот транслятор писал.

А синтаксис бейсика сделан (специально или нет - не знаю) максимально удобно для человека, и в плане понимания, и в плане написания. Почему это по-вашему недостаток, я не понимаю. Или вам чем хуже тем лучше?

anonymous
()
Ответ на: комментарий от anonymous

> А где написано, что чат можно консольный?

Что не запрещено правилами, разрешено. В особо спорных случаях рассматриваются оба варианта. То есть, с GUI на Python и консольным вариантом на VB.

Справедливо?

eugine_kosenko ★★★
()

Ненадо готовой проги, заипёсё переписывать. Луче ТЗ какое нибудь с чёткими требованиями, по которому можно будет зделать. Заодно мож и новое полезное прого у ково паявицо.

bugmaker ★★★★☆
()
Ответ на: комментарий от anonymous

> А синтаксис бейсика сделан (специально или нет - не знаю) максимально удобно для человека, и в плане понимания, и в плане написания.

Ща придут лисперы и попросят написать генератор перестановок на VB :-).

Или таки слабО?

eugine_kosenko ★★★
()
Ответ на: комментарий от anonymous

> Или вам чем хуже тем лучше?

Ну, так Unix weenies всегда были террористами от синтаксиса. Взять например sendmail.cf :) Давайте будем долго спорить о синтаксисе, потом о стиле оформления кода и правилах именования переменных... Любишь кататься, люби и катайся. Других только лечить не надо. У вас лицензии на медицинскую практику нет :)

mutronix ★★★★
()

Предложение: напишите прогу, делающую локальную карту сайта. Например, у меня пров держит локалку, файлы отдаются по http: Соответственно хотелось бы поиметь локально зеркало/карту/либо текстовый файл, для удобства поиска. Например, я не знаю в какой папке у прова лежит кино City's Lights. Делают поиск по локальной карте и выяснив это, быстро ставлю файл на слив.

Если есть готовые удобные варианты, то предложите

Кстати, что лучше: делать зеркало в виде каталогов с index.html файлами или пихать все ссылки в один огромный txt файл? По нему же поиск будет аццки долго происходить, особенно если я задам название файла регекспами.

anonymous
()

умя такое предложение

1) загнать поцыента с висуалвасиком обратно в палату

2) народить консольный куркулятор с переключяемыми режимами: обычным и польским, с поддержкой переменных, всякими ништяками... Если предложение будет поддержано, утвердим список ништякоф.

bugmaker ★★★★☆
()
Ответ на: комментарий от anonymous

А онанимус так и не показал свой чат на васике...

anonymous
()
Ответ на: комментарий от eugine_kosenko

А потом придут хаскеллеры и попросят синтаксический анализатор С++, написанный безо всяких препроцессоров и генераторов :-))

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

> А потом придут хаскеллеры и попросят синтаксический анализатор С++, написанный безо всяких препроцессоров и генераторов :-))

Вот только ядро на хаскеле напишут и сразу придут :)

mutronix ★★★★
()
Ответ на: комментарий от anonymousI

Нормальный, даже очень хороший. Мозги и логическое мышление развивает :) Что особо хорошо демонстрируют такие примеры (те же пыхпыхбыдлокодеры такое никогда в жизни не осилят) :)

Ramen ★★★★
()
Ответ на: комментарий от Ramen

Лучше всех мозги и логическое мышление развивает Whitespace =)

А вообще если глянуть на obfuscation contest http://www.ioccc.org/main.html - то оказывается на C можно такие загигулины вытворять =)

anonymousI
()
Ответ на: комментарий от anonymous

> гуёвый чат по TCP. Два окошка - в одном ("сервер") текстбокс с номером порта, кнопка "ждать коннект" и текстбокс с собственно чатом. На втором ("клиент") тоже самое, только дополнительно текстбокс с IP "сервера". Должно работать не только в пределах одного компа, но и полноценно по сети

всё равно не спиться :)
желающие могут повторить на VB..
#!/usr/bin/tclsh
array set CONF {
	defaultHost "localhost"
	defaultPort "3355"
	defaultNick "anonymous"
}
set mode "passive"
package  require Tk
## GUI
proc chatFrame { w } {
	labelframe $w -text "Chat"
	text $w.tx \
		-xscrollcommand [ list $w.hscroll set ] \
		-yscrollcommand [ list $w.vscroll set ]
	$w.tx configure -font "Courier 12"
	$w.tx tag configure system -font "Courier 12 bold" -relief ridge -border 2
	scrollbar $w.vscroll -orient vert \
		-command [ list $w.tx yview ]
	scrollbar $w.hscroll -orient hor \
		-command [ list $w.tx xview ]
	set fr [ frame $w.interact ]
	menubutton $fr.inType -text "Say:"
	entry $fr.input
	bind $fr.input <Key-Return> [ list chatAction $w ]
	button $fr.doit -text "send" -command [ list chatAction $w ]
	button $fr.clear -text "clear" -command [ list $fr.input delete 0 end ]
	eval pack [ winfo children $fr ] -side left
	
	grid $w.tx -row 0 -column 0 -sticky "nsew"
	grid $w.vscroll -row 0 -column 1 -sticky "ns"
	grid $w.hscroll -row 1 -column 0 -sticky "ew"
	grid $w.interact -row 2 -column 0 -columnspan 2 -sticky "ew"
	grid rowconfigure $w 0 -weight 1
	grid columnconfigure $w 0 -weight 1
	return $w
}
proc chatAction { w } {
	set str [ string trim [ $w.interact.input get] ]
	if { $str == {} } {
		return
	}
	if [ chatSend $str ] {
		$w.interact.input delete 0 end
	}
}
proc dialFrame { w } {
	global CONF
	labelframe $w -text "Dial"
	label $w.hostPrompt -text "Host:"
	entry $w.host
	label $w.portPrompt -text "Port:"
	entry $w.port
	label $w.nickPrompt -text "Nick:"
	entry $w.nick -state disabled
	set fr [ frame $w.bbox ]
	button $fr.client -text "Connect" -command [ list dialConnect $w ]
	button $fr.server -text "Answer" -command [ list dialAnswer $w ]
	button $fr.discon -text "Drop" -command [ list chatDrop ]
	eval pack [ winfo children $fr ] -side left -fill x
	grid $w.hostPrompt -row 0 -column 0 -sticky "e"
	grid $w.host -row 0 -column 1 -sticky "w"
	grid $w.portPrompt -row 1 -column 0 -sticky "e"
	grid $w.port -row 1 -column 1 -sticky "w"
	grid $w.nickPrompt -row 2 -column 0 -sticky "e"
	grid $w.nick -row 2 -column 1 -sticky "w"
	grid $w.bbox -row 3 -column 0 -columnspan 2 -sticky "ew"
	grid columnconfigure $w 1 -weight 1
	$w.host insert end $CONF(defaultHost)
	$w.port insert end $CONF(defaultPort)
	$w.nick insert end $CONF(defaultNick)
	return $w
}
## ENGINE
proc dialConnect { w } {
	set host [ string trim [ $w.host get ] ]
	set port [ string trim [ $w.port get ] ]
	chatSystem "CONNECT TO $host:$port"
	if [ catch { socket $host $port } sock ] {
		chatSystem "FAULT"
		return
	}
	fconfigure $sock -encoding utf-8 -blocking 0 -buffering line
	fileevent $sock readable [ list clientRead $sock ]
	global clientSock
	global mode
	set clientSock $sock
	set mode "client"
	chatSystem "CONNECTED"
}
proc dialAnswer { w } {
	global serverSock
	set port [ string trim [ $w.port get ] ]
	set serverSock [ socket -server serverAccept $port ]
	global mode
	global serverAddr
	set serverAddr [ lindex [ fconfigure $serverSock -sockname ] 0 ]
	set mode "server"
	chatSystem "ANSWER ON $serverAddr"
}
proc serverAccept { sock host port } {
	fconfigure $sock -encoding utf-8 -blocking 0 -buffering line
	fileevent $sock readable [ list serverRead $sock $host $port ]
	global client
	set client($sock) $host:$port
	chatSystem "$host:$port login"
}
proc serverRead { sock host port } {
	global client
	global mode
	if { [ catch { gets $sock } str ] || $str == {} } {
		close $sock
		unset client($sock)
		chatSystem "$host:$port logout"
		broadcast $host:$port logout
		return
	}
	chatMessage $host:$port $str
	broadcast $host:$port $str
}
proc clientRead { sock } {
	global clientSock
	global mode
	if { [ catch { gets $sock } str ] || $str == {} } {
		close $sock
		set clientSock {}
		chatSystem "DISCONNECTED"
		set mode "passive"
		return
	}
	set addr [ lindex $str 0 ]
	set msg [ lreplace $str 0 0 ]
	chatMessage $addr $msg
}
set dialFrame [ dialFrame .dial ]
set chatFrame [ chatFrame .chat ]
proc broadcast { author msg } {
	global client
	foreach { chan addr } [ array get client ] {
		if { $addr == $author } {
			continue
		}
		puts $chan [ list $author $msg ]
	}
}
proc chatSystem { msg } {
	global chatFrame
	$chatFrame.tx insert end $msg system
	$chatFrame.tx insert end "\n"
}
proc chatMessage { author msg } {
	global chatFrame
	$chatFrame.tx insert end "$author > $msg"
	$chatFrame.tx insert end "\n"
}
proc chatSend { msg } {
	global mode
	global clientSock
	if { $mode == "server" } {
		global client
		chatMessage "server" $msg
		broadcast "server" $msg
	} elseif { $mode == "client" && $clientSock!={} } {
		puts $clientSock $msg
	} else {
		chatMessage "local" $msg
	}
	return 1
}
proc chatDrop {} {
	global mode
	if { $mode == "server" } {
		global serverSock
		catch { close $serverSock }
		foreach { chan addr } [ array get client ] {
			catch { close $chan }
		}
		set serverSock {}
		array unset client
	} elseif { $mode == "client" } {
		global clientSock
		catch { close $clientSock }
	}
	chatSystem "STOPPED"
}
pack $dialFrame $chatFrame -side top -fill both -expand yes

MKuznetsov ★★★★★
()
Ответ на: комментарий от anonymous

> А так - накатай, скажем, простейший гуёвый чат по TCP. 
> Два окошка - в одном ("сервер") текстбокс с номером порта,
> кнопка "ждать коннект" и текстбокс с собственно чатом. На втором 
> ("клиент") тоже самое, только дополнительно текстбокс с IP "сервера". 
> Должно работать не только в пределах одного компа, но и 
> полноценно по сети.

34 строки:

lang import "./glade.so";
*world = gtk load "./chat.glade";
*window = world["window1"];
*socket = CSocket new;
*readloop = 
{
  'var = true;
  socket 'EOFError =
  {
    gtk quit;
    var = false;
  };
  var while { world["remote"] text = socket readline chomp; };
};
world["server"] connect
{
  world["remote"] text = "Waiting for connection...";
  world["server"] visible = world["client"] visible = false;
  {
    socket = CSocket new bind(CAddr new: "tcp://*:\{world["port_number"] text}") listen accept;
    world["remote"] text = "\{socket addr host} connected.";
    &readloop thread;
  } thread;
};
world["client"] connect
{
  socket :connect CAddr new: "tcp://\{world["remote"] text}:\{world["port_number"] text}";
  world["server"] visible = world["client"] visible = false;
  &readloop thread;
};
world["send"] connect { socket <<< world["message"] text; };
window show;
gtk main;

Целиком всё (бинарник под i686-linux, XML от glade с описанием окошка программы): http://mail.kmeaw.com/chat.tar.bz2

За внешний вид просьба не ругать - из меня ужасный дизайнер.

А сколько строк получится на VB?

kmeaw ★★★
()
Ответ на: комментарий от bugmaker

> народить консольный куркулятор с переключяемыми режимами: обычным и польским, с поддержкой переменных, всякими ништяками... Если предложение будет поддержано, утвердим список ништякоф.

Первые 100 или около того страниц драгонбука, на си пишется в несколько функций 8-\ И в чем будет прикол такого "контеста"?

uj2 ★★★
()
Ответ на: комментарий от uj2

>> народить консольный куркулятор с переключяемыми режимами: обычным и польским, с поддержкой переменных, всякими ништяками... Если предложение будет поддержано, утвердим список ништякоф.

> Первые 100 или около того страниц драгонбука, на си пишется в несколько функций 8-\ И в чем будет прикол такого "контеста"?

хуже того, это просто вырезки из man flex,man bison :) а толк - весьма толковый, можно узнать у кого качественнее copy|paste работает :)

MKuznetsov ★★★★★
()
Ответ на: комментарий от uj2

Ну тада незнаю... На чёто намного более сложное нету возможности время тратить

bugmaker ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.