Yiff.ru

Форум

Главная
Галерея
Истории
FAQ
Ссылки
О сайте
Форум
Гостевая книга
Логин:      Пароль:     [ Регистрация | Поиск ]
Форум yiff.ru >> Бейсик и все все всеСтраницы: [<<<][ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ..14 ][>>>]

Автор Сообщение
Wise Dragon
Тентакледракон
Сообщений: 7533

09.01.2014 13:54
Инфо | цитировать | линк
~, только вот тормозной, если сравнивать с Perl тем же.

Аthаri писал:которые надо бы сохранить
Эти у меня не так работают, я не заморачивался.

Что ты со своим "лучше" лезешь, если его не обосновал?
Я только что недостатки перечислил. Никаких особых достоинств, перечёркивающих перечисленные недостатки в треде не назвали. Следовательно — смысла изучать C# и тем более VB нет, если он не требуется для важной работы. А если требуется — и Cobol изучишь, но это же не говорит, что Cobol — хороший язык для начального обучения программированию?

Аthаri писал: Мне нравятся Visual Studio, PhotoShop и 3dsMax
А тебе кто-то ими запрещает пользоваться? Если они реально нужны, ничего не мешает использовать вайн или виртуалку с Windows, другое дело, что подавляющему большинству пользователей, включая меня, они не нужны — а значит необходимости использовать wine или виртуалку нет.

 
 
 
Jabberсвободное общение!
~
Незарегистрирован

Сообщений: 6720

09.01.2014 14:06
Инфо | цитировать | линк
Wise Dragon писал: только вот тормозной, если сравнивать с Perl тем же
А тёплое с мягким ты тоже сравниваешь?

 
 
 
Рыцарь унылого образа
Wise Dragon
Тентакледракон
Сообщений: 7533

09.01.2014 14:10
Инфо | цитировать | линк
~, и Perl и Ruby — скриптовые языки. Второй — основан на первом. Их что-то мешает сравнивать? Был бы Ruby не тормозной, его бы можно было использовать вместо Perl и/или Python, но увы.

Впрочем как язык он, возможно, достаточно неплохой. Хотя и не лучший.

 
 
 
Jabberсвободное общение!
~
Незарегистрирован

Сообщений: 6720

09.01.2014 14:15
Инфо | цитировать | линк
Wise Dragon писал: Был бы Ruby не тормозной, его бы можно было использовать вместо Perl и/или Python, но увы.
«Объектный Perl» не сказать, чтоб бил рекорды производительности. А без объектной составляющей, непонятно, как ты будешь сравнивать его с Руби. Кстати, Python — тоже тот еще любитель призадумываться и по производительности без использования некоторых ухищрений местами проигрывает даже PHP.

Wise Dragon писал: Хотя и не лучший.
Конечно. Лучший язык — это JavaScript. Это был сарказм, если что.

 
 
 
Рыцарь унылого образа
Wise Dragon
Тентакледракон
Сообщений: 7533

09.01.2014 14:32
Инфо | цитировать | линк
~, не использовать ООП там где оно не нужно и не считать его панацеей. Зачем вообще ООП в программах, которые пишутся в одиночку, особенно если это не игры (где может быть удобно представлять игровые объекты как объекты)?
 
 
 
Jabberсвободное общение!
.
 

Сообщений: 1763

09.01.2014 15:10
Инфо | цитировать | линк
Я только что недостатки перечислил. Никаких особых достоинств, перечёркивающих перечисленные недостатки в треде не назвали.
Wise Dragon, у шарпа очевидные преимущества как у мейнстримового языка: большое сообщество, большое количество библиотек и прочего кода, огромное количество литературы, мощнейшие среды разработки, активное развитие, лёгкость поиска работы и т.п.

Если ты пишешь на OCaml или, прости Айхею, на Tcl, то ты сам по себе. Возникла проблема — разбирайся сам, не хватает библиотеки — изобретай велосипед сам, нужен рефакторинг — пили регулярки в "блокноте с подсветкой", про работу можно вообще забыть.

Исходя из этого, выбираем среди мейнстримовых языков. Вот среди мейнстримовых языков шарп уже умеет очевидные преимущества:
* В него напихано всё: объектно-ориентированное, функциональное, обобщённое, событийно-ориентированное, мета- программирование; статическая и динамическая типизация; рефлексия и так далее и тому подобное.
* Нагромождения синтаксического сахара и мощных фишек вроде yield, async/await, linq, event, expression trees и т.п., которые помогают избавляться от проблемно-фабричного программирования.
* Не выпилены в угоду простоте базовые вещи типа перегрузки операторов и беззнаковых чисел.
* Нормальное скрещивание с другими языками за счёт CLR, COM и Interop.
* Нормальная производительность, возможность опускаться до битов и байтов при необходимости, эффективный сборщик мусора.

Я не отрицаю, у некоторых немейнстримовых языков есть разнообразные достоинства, которых мне в шарпе не хватает. Но мне легче отказаться от прикольных фич (или дождаться их появления в шарпе), чем отказаться от всех удобств, которые несёт с собой программирование на мейнстримовом языке. Если соревноваться в количестве байт кода (сомнительное соревнование само по себе), то шарп будет проигрывать тому же питону, но, во-первых, проигрыш будет не настолько разительным; во-вторых, питон не даст мне всех фич шарпа.

В новом шестом шарпе будет новый компилятор, написанный на шарпе, в который можно будет вклиниться на любой стадии. В связи с этим я ожидаю серьёзных революций в языке.

А тебе кто-то ими запрещает пользоваться? Если они реально нужны, ничего не мешает использовать вайн или виртуалку с Windows
Ставить линукс, чтобы 90% времени сидеть вод виндовой виртуалкой? Смеёшься что ли?

~, не использовать ООП там где оно не нужно и не считать его панацеей. Зачем вообще ООП в программах, которые пишутся в одиночку, особенно если это не игры (где может быть удобно представлять игровые объекты как объекты)?
Спасибо, поржал. Все твои программы не выходят за рамки 4К, я правильно понимаю? f:>

 
 
 
~
Незарегистрирован

Сообщений: 6720

09.01.2014 15:37
Инфо | цитировать | линк
Wise Dragon писал: Зачем вообще ООП в программах
Толсто.

 
 
 
Рыцарь унылого образа
Wise Dragon
Тентакледракон
Сообщений: 7533

09.01.2014 15:58
Инфо | цитировать | линк
Аthаri писал: Все твои программы не выходят за рамки 4К, я правильно понимаю?
На нормальных языках 4K — это очень много. В таком количестве кода на K или J запросто поместится полноценная СУБД например.

Ставить линукс, чтобы 90% времени сидеть вод виндовой виртуалкой?
Кому как. Я лично под виндовой виртуалкой сижу 0% времени. Мои знакомые, кому иногда нужны всякие виндовые программы — от силы 1-3%.
А ты что, 90% времени работаешь с перечисленными трёмя программами?

Нормальное скрещивание с другими языками за счёт CLR, COM и Interop.
И как с помощью этих эзотерических слов скрестить C# с Common Lisp или Tcl/Tk?

во-вторых, питон не даст мне всех фич шарпа.
Что можно сделать на шарпе, чего нельзя сделать на питоне?

Нормальная производительность, возможность опускаться до битов и байтов при необходимости, эффективный сборщик мусора.
Вот что-то я сомневаюсь. Ну напиши на C# решето Эратосфена до миллиарда (должно выдавать на консоль все простые числа от 2 до 1 млрд, по одному числу в строке, после каждой строки, состоящей только из десятичных цифр символ 0x0A (перевод строки), в тч после последней) и скажи сколько это займёт оперативной памяти и сколько времени будет выполняться. Должно помещаться в гигабайт памяти и выполняться не более 1 минуты. Полученный файл с числами должен занимать 501959790 байт и последние числа в нём — 999999893 999999929 999999937. Исходный код должен быть не более 1 килобайта (у меня он значительно меньше, но я делаю скидку на многословность шарпа).

Нагромождения синтаксического сахара
В него напихано всё: объектно-ориентированное, функциональное, обобщённое, событийно-ориентированное, мета- программирование; статическая и динамическая типизация; рефлексия и так далее и тому подобное.
Это не преимущества, а недостатки, особенно, для начального обучения. Чем больше всякой синтаксической дряни и ненужных фич — тем больше вариабельность кода и тем труднее его читать, если ты не знаешь язык полностью. А если язык настолько сложный — ты его не изучишь полностью без нескольких лет задротства.

Полная противоположность этому — Tcl, Oberon, Lua, большинство лиспов и в меньшей степени Python. Не смотря на мощность этих языков (хотя про оберон не скажу, его не пыался изучать, просто читал пару статей), они имеют простой базовый синтаксис, так что изучить его полностью можно за несколько дней. А тот же Tcl вообще за пару недель можно изучить на уровне эксперта. Я вначале не верил, а потом сам попробовал. Писать простенькие программы смог уже в первый же час, прочитав введение на сайте, а что-то вроде этого калькулятора — уже недели через две или три.

А освоить C# чтоб писать полноценные GUI-приложения с применением метапрограммирования и всего прочего что ты перечислил за две недели можно? В моём калькуляторе используются почти все фишки Tcl — я его специально так писал. Ну кроме работы с неймспейсами, файлами и сетью.

Аthаri писал: Исходя из этого, выбираем среди мейнстримовых языков.
Tcl, Lua и Python вполне себе мейнстримные. Вот J, dc или VBscript — не мейнстримные.

Или по твоему определению мейнстримные — это только те, которые по умолчанию есть в Windows или хотя бы визуальной студии некрософта?

у шарпа очевидные преимущества как у мейнстримового языка: большое сообщество, большое количество библиотек и прочего кода, огромное количество литературы, мощнейшие среды разработки, активное развитие, лёгкость поиска работы и т.п.
Только не надо вот этой всей воды, где конкретика? Давай уже калькулятор, который написал.

[Добавлено 09.01.2014 16:01:07]:

~ писал(а): Толсто.
Ну я правда не понимаю, зачем лепить ООП во все щели. Тот же Linux огромнейший проект с сотней мегабайт исходников вполне обходится без ООП. А в небольших программах (скажем менее 100 кб полных исходников) зачем он нужен непонятно чуть менее чем совсем, если конечно речь не идёт о специфической предметной области, где представление того, с чем работает программа, в виде объектов более удобно чем другое.

 
 
 
Jabberсвободное общение!
.
 

Сообщений: 1763

09.01.2014 16:52
Инфо | цитировать | линк
А ты что, 90% времени работаешь с перечисленными трёмя программами?
Не 90%, но 8 рабочих часов в день — это слишком много сидения в виртуалке. Вообще, я разрабатываю под самую популярную ось, поэтому логично не выпендриваться и разрабатывать прямо из под этой оси. Зачем мне две оси, если хватает одной?

И как с помощью этих эзотерических слов скрестить C# с Common Lisp или Tcl/Tk?
Назови хоть одну причину это делать. Что мне может понадобиться, реализованное на этих языках?

Вообще, из лиспов есть ClosureCLR (полноценная пара ClosureJVM), IronScheme (Scheme на допиленном DLR), IronLisp (недоделан, морфировал в IronScheme) и Lisp#/L# (мёртвый).

Что можно сделать на шарпе, чего нельзя сделать на питоне?
WPF нельзя сделать.

Ну напиши на C# решето Эратосфена до миллиарда
У тебя решение в лоб? (А то ещё окажется, что есть какие-нибудь выкрутасы.) На каком языке?

Это не преимущества, а недостатки, особенно, для начального обучения.
Не пытаешься впихать в начинающих весь язык — нет проблем.

А если язык настолько сложный — ты его не изучишь полностью без нескольких лет задротства.
На изучение библиотек и фреймворков ты потратишь в разы больше времени, чем на изучение языка. Кроме того, никто не заставляет знать всё, почти всегда пользуются подмножеством. Просто если что-то понадобится, ты будешь знать, что оно есть, изучишь и сможешь спокойно пользоваться. А не будешь страдать из-за минимализма.

А освоить C# чтоб писать полноценные GUI-приложения с применением метапрограммирования и всего прочего что ты перечислил за две недели можно?
Да запросто. Это не C++.

Или по твоему определению мейнстримные — это только те, которые по умолчанию есть в Windows или хотя бы визуальной студии некрософта?
Мейнстримовые — это со средами разработки, ориентированными на эти языки, с сотнями тысяч вопросов на stackoverflow, с десятками-сотнями миллионов результатов в гугле, с тысячей результатов на хедантере, с сотнями проектов на одеске.

Питон — да, мейнстрим; Tcl — нет.

Только не надо вот этой всей воды, где конкретика?
Извини, но сообщество, библиотеки и литература — это совсем-совсем не вода, а очень важный критерий. По которому C# сдаёт, скажем, относительно Java или C++. И эта проблема стоит времени и денег.

 
 
 
~
Незарегистрирован

Сообщений: 6720

09.01.2014 17:00
Инфо | цитировать | линк
Wise Dragon писал: Ну я правда не понимаю, зачем лепить ООП во все щели.
Так может стоит разобраться?

Аthаri писал: На изучение библиотек и фреймворков ты потратишь в разы больше времени, чем на изучение языка
А их глюки особенности будешь «доучивать» всю оставшуюся профессиональную «жизнь»! Му-ха-ха!

 
 
 
Рыцарь унылого образа
.
 

Сообщений: 1763

09.01.2014 17:25
Инфо | цитировать | линк
А их глюки особенности будешь «доучивать» всю оставшуюся профессиональную «жизнь»! Му-ха-ха!
Шушик, меньше всего повезло программистам на C++: особенности самого языка всю жизнь учить. f:>

[Добавлено 09.01.2014 18:24:02]:

Эратосфен:

Реализация 1 (bool array): 20 400 ms на решето, 12 028 ms на вывод в файл, памяти 1 ГБ.

Реализация 2 (bit array): 26 587 ms на решето, 17 459 ms на вывод в файл, памяти 130 МБ.

Реализация 3 (reference): как первый вариант, но никакого хлама с бенчмарками, тупо вывод в консоль. Это для тех, кто будет придираться к размеру файла.

Должен заметить, что под виндой редирект из консоли в файл космически тормозной, именно поэтому в первых двух реализациях явная запись в файл. Но мы меряем производительность языка, а не оси, так что без претензий.

 
 
 
Wise Dragon
Тентакледракон
Сообщений: 7533

09.01.2014 19:37
Инфо | цитировать | линк
Аthаri писал: У тебя решение в лоб? (А то ещё окажется, что есть какие-нибудь выкрутасы.) На каком языке?
Делал на нескольких языка, в тч C, Tcl и Lua. Ещё были варианты на других языках, в том числе на Ruby — из-за чего я и пишу, что он тормозной.

Быстрее всех после C оказались Tcl и Lua. Насчёт перла не помню, Python несколько медленней Tcl, а Ruby совсем тормоз.

Аthаri писал: Вообще, я разрабатываю под самую популярную ось
А зачем разрабатывать под конкретную ОС, если можно делать кроссплатформенно?

20 400 ms на решето, 12 028 ms на вывод в файл
Весьма неплохо. А может всё-таки измеришь с выводом на консоль и перенаправлением в файл? А какой у тебя процессор и частота памяти? У меня довольно старое железо и вариант в аттаче выполняется за 63 секунды. С небольшой оптимизацией — 36 секунд.

~ писал(а): Так может стоит разобраться?
Может быть. Расскажи мне, зачем делать объектами целые и действительные числа и прочие примитивы?

WPF нельзя сделать.
А зачем его делать? Он чем-то лучше Tk или Qt? Наверное даже в Mono толком не работает?

Не пытаешься впихать в начинающих весь язык — нет проблем.
Лучше дать им такой язык, который они смогут изучить полностью. Чтоб не было такой ситуации, когда они вроде изучили язык, а потом внезапно встречают в коде на нём конструкции которые вводят их в тупик.
Тогда они смогут читать код программ, которые сами используют и учиться на наглядном примере, как оно сделано.

Да запросто. Это не C++
Разве? А кто там перечислял с десяток умных слов, которые в него напиханы без всякой системы?

Аthаri писал: с сотнями тысяч вопросов на stackoverflow
А зачем мне сотни тысяч вопросов на so если у Tcl есть собственная вики, где до сей поры находилось всё что я искал и овердофига всяких библиотек?

Кроме того, может язык просто сам по себе такой простой и понятный, что по нему возникает меньше вопросов?

Кстати по поводу возможностей C#, ты сказал что метапрограммирование есть. ОК, задефайнь 100 функций с именами типа fN, где N число от 1 до 100 в десятичой системе, каждая из которых выводит соответствующее число. Не используя при этом препроцессор.

 
 
 
Jabberсвободное общение!
~
Незарегистрирован

Сообщений: 6720

09.01.2014 20:22
Инфо | цитировать | линк
Wise Dragon писал: зачем делать объектами целые и действительные числа и прочие примитивы?
Как минимум, для единообразия синтаксиса.


// JavaScript
console.log('abc'.indexOf('b')); // Поиск подстроки

console.log(['a', 'b', 'c'].indexOf('b')); // Поиск элемента массива


В данном случае имеем «примитивный тип» — строку и массив. Но обращение к методам для удобства унифицировано.

 
 
 
Рыцарь унылого образа
Wise Dragon
Тентакледракон
Сообщений: 7533

09.01.2014 20:50
Инфо | цитировать | линк
$ time ./sieve_x 1000000000 > 3.txt

real 1m1.458s
user 0m59.540s
sys 0m1.096s
# изменённая версия, включен вариант Minimalistic
$ mcs sieve_athari_x.cs
$ time mono sieve_athari_x.exe > 1.txt

Unhandled Exception: OutOfMemoryException

# неизменённая версия, точно как в аттаче
$ time mono sieve_athari_0.exe
Time: 75 240 ms / Task: Calculation 2 (bit array)
Time: 49 653 ms / Task: Output 2
Press any key...

real 2m21.816s
user 1m59.019s
sys 0m0.784s
$ diff -s 2.txt 3.txt
Файлы 2.txt и 3.txt идентичны



Выжрал всю память и выпал, не добравшись даже до ста тысяч, хотя свободно целых 1.5 гигабайта.

Мой вариант на C в аттаче. Можешь свой вариант на C# почистить, чтоб остался только простейший вариант кода, функционально идентичный моему и бенчмарк делать внешний, измеряя время от запуска до завершения программы, сделать парсинг параметров командной строки и убрать паузу — зачем ты её вообще сделал? Она только мешает.

Пока что получается что даже без всяких оптимизаций вариант на C завершается быстрее (включая запись в файл через перенаправление из консоли), чем твой вариант только считает.

Кстати вот тебе пример — даже с C# работать в консоли значительно проще чем в GUI — можно и тестировать производительность без всякого сложного кода и компилировать и редактировать код.

 
 
 
Jabberсвободное общение!
.
 

Сообщений: 1763

09.01.2014 21:53
Инфо | цитировать | линк
Wise Dragon, за Mono не отвечаю. Во-первых, не имею понятия, как моно компилит по умолчанию (с оптимизациями или без и т.п.). Во-вторых, моно оптимизирован хуже дотнета.

Выжрал всю память и выпал
Это бред какой-то, там выделяется только один большой массив, дальше всё на стеке. Попробуй запустить без "time" и "> 1.txt". Может, твой линукс решил вывод буферизовать на одной из стадий.

Можешь свой вариант на C# почистить, чтоб остался только простейший вариант кода
Ты сначала определись, что меряешь. У тебя больше времени будет занимать ввод-вывод, а не расчёты. Бенчмарк, в котором всё свалено в кучу — это не бенчмарк.

Пока что получается что даже без всяких оптимизаций вариант на C завершается быстрее
Удивил. Чтобы соревноваться с C в синтетическом числодробительном бенчмарке, нужно быть идиотом. Меня проседание в два раза на числодроблении относительно сей ну вообще не волнует, потому что в моих программах или используется уже оптимизированная версия, уже написанная кем-то на низкоуровневом языке, или доля числодробления пренебрежимо мала относительно остальных операций (диск и сеть, внезапно). Оптимизировав в два раза операцию, которая занимает 5 мс из 100 мс, ты какой прирост производительности получишь?

Кстати вот тебе пример — даже с C# работать в консоли значительно проще чем в GUI — можно и тестировать производительность без всякого сложного кода и компилировать и редактировать код.
Ты что, ещё и лечить меня насчёт достоинств консоли относительно IDE надумал? Это ж вообще клиника.

 
 
 
Wise Dragon
Тентакледракон
Сообщений: 7533

09.01.2014 22:27
Инфо | цитировать | линк
Аthаri писал: Во-вторых, моно оптимизирован хуже дотнета.
С чего ты взял?

Аthаri писал: У тебя больше времени будет занимать ввод-вывод, а не расчёты. Бенчмарк, в котором всё свалено в кучу — это не бенчмарк.
Посмотри на лог выше — видишь там, что вывод занял 50 секунд, а вычисление — 75 секунд, так что ошибаешься ты.

В любой практической задаче результат вычислений нужно вывести. Но если ты настаиваешь — вполне можно закомментировать строчку с printf и сравнить. Правда, если ты уберёшь вывод, где гарантия что компилятор не заоптимизирует всё до main(){exit(0);} ?

Аthаri писал: достоинств консоли относительно IDE надумал
Если уж на то пошло, почему твоя IDE не может даже оставить окно консоли открытым, так чтоб тебе не пришлось вставлять костыль в виде "Press any key"?

Почему в ней нет кнопки "запустить с бенчмарком", которая бы измерила время и максимальную потребляемую память, а приходится городить бенчмарк прямо в коде программы?

И вообще, чем спорить, почисти лучше код, как я сказал. Для теста без вывода ничего не мешает закомментировать строку с ним.

 
 
 
Jabberсвободное общение!
.
 

Сообщений: 1763

09.01.2014 22:37
Инфо | цитировать | линк
Делал на нескольких языка, в тч C, Tcl и Lua. Ещё были варианты на других языках, в том числе на Ruby — из-за чего я и пишу, что он тормозной.
Wise Dragon, то есть ты строишь выводы о производительности языка на основании одного синтетического бенчмарка, в котором в кучу свалены выделение большого блока памяти, операции на целых числах и ввод-вывод? Я правильно понял? f:>

А зачем разрабатывать под конкретную ОС, если можно делать кроссплатформенно?
Проще.

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

А может всё-таки измеришь с выводом на консоль и перенаправлением в файл?
Мне нервов не хватит. Без понятия, что именно и почему тормозит.

А какой у тебя процессор и частота памяти?
3.3 GHz, память не помню (не топовая, самая дешёвая, которая была).

А зачем его делать? Он чем-то лучше Tk или Qt?
Векторная графика, биндинги, DirectX, 3D, анимация, стили, шаблоны, графика, видео, шейдеры, документы, типография, проверка орфографии. Ключевая фишка — какой угодно контрол можно положить в какой угодно контрол, что избавляет от зоопарка классов "кнопка с картинкой" и ручной прорисовки сложно оформленных элементов списка.

К сожалению, XAML — ужас, но не будем о грустном.

Что сейчас в Qt есть — не знаю. Фичи смотрел, выглядит вкусно. Но, к сожалению, одного того, что Qt для C++, достаточно, чтобы держаться от него подальше.

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

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

Разве? А кто там перечислял с десяток умных слов, которые в него напиханы без всякой системы?
И при чём здесь гуй? Чтобы написать Hello World на WinForms, нужно создать новый проект, перетащить кнопку на форму, сдлелать двойной щелчок по ней и ввести MessageBox.Show("Hello world").

Сложные вещи нужны для сложных вещей, новички без них обойдутся.

А зачем мне сотни тысяч вопросов на so если у Tcl есть собственная вики, где до сей поры находилось всё что я искал и овердофига всяких библиотек?
Сколько гуёвых библиотек? Сколько ORMов? Сколько веб-фреймворков?

ОК, задефайнь 100 функций с именами типа fN, где N число от 1 до 100 в десятичой системе, каждая из которых выводит соответствующее число. Не используя при этом препроцессор.
"Мета" — широкое понятие. Не своди всё к генерации кода.

Твою задачу я решу через T4, по сути препроцессор.

 
 
 
Wise Dragon
Тентакледракон
Сообщений: 7533

09.01.2014 22:43
Инфо | цитировать | линк
Аthаri писал: Так как я пишу не консольные поделки на пару сотен строк, а приложения с гуём и прочим, то подобное необходимо тестировать на всех поддерживаемых осях, даже если используешь исключительно кросс-платформенные вещи.
Зато, тестирование на разных платформах позволяет выявить больше багов — и даже не обязательно специфичных для конкретных платформ — а значит кроссплатформенная программа будет работать лучше некроссплатформенной. Ну и плюс тебя никто не заставляет тестировать самому — кому надо, те возьмут код и потестируют. Главное не городить грязных виндофильских хаков специально (типа захардкоженного обратного слеша в путях или прямых вызовов Windows API).

Мне нервов не хватит. Без понятия, что именно и почему тормозит.
Предположу, что +"n", по крайней мере, в питоне конкатенация строк — дорогая операция, так как они иммутабельны.

Про линукс ты зря нагоняешь — что так, что так падает где-то не доходя до 100 млн с OOM Exception.

"Мета" — широкое понятие. Не своди всё к генерации кода.
И где оно в шарпе тогда?

Чтобы написать Hello World на WinForms, нужно создать новый проект, перетащить кнопку на форму, сдлелать двойной щелчок по ней и ввести MessageBox.Show("Hello world").
А чтоб написать что-нибудь хотя бы уровня моего калькулятора? (который я кстати вовсе не считаю прямо таким уж достижением) А чтоб написать его только средствами, которые встроены в винду изкоробки?

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

Но, к сожалению, одного того, что Qt для C++, достаточно, чтобы держаться от него подальше.
А тебя кто-то заставляет изучать все фичи C++ чтоб кодить на Qt? Да и вообще, так уж ли он сложнее того же шарпа?

3.3 GHz
Вообще-то у современных процессоров частота мало о чём говорит, но у меня 1.6 ГГц.

 
 
 
Jabberсвободное общение!
.
 

Сообщений: 1763

09.01.2014 22:51
Инфо | цитировать | линк
С чего ты взял?
Wise Dragon, с бенчмарков. Гугли.

Посмотри на лог выше — видишь там, что вывод занял 50 секунд, а вычисление — 75 секунд, так что ошибаешься ты.
Вопрос не в больше-меньше, вопрос в сваливании в кучу разных вещей и измерении суммы. Нормальные люди так бенчмарки не делают.

Правда, если ты уберёшь вывод, где гарантия что компилятор не заоптимизирует всё до main(){exit(0);} ?
Это уже к вопросу об искусстве написания качественных бенчмарков. Не думаю, что даже сишный компилятор будет что-то выкидывать, если в конце прочитать значение последнего элемента массива. Но это проверять надо, разумеется.

Если уж на то пошло, почему твоя IDE не может даже оставить окно консоли открытым, так чтоб тебе не пришлось вставлять костыль в виде "Press any key"?
Знаешь, это остаётся для меня загадкой... Если запускать не под дебаггером, то консоль остаётся, если под дебаггером — закрывается. Вообще не задавался вопросом, я консольные приложения нечасто пишу, мне легче написать одну строчку кода.

Почему в ней нет кнопки "запустить с бенчмарком", которая бы измерила время и максимальную потребляемую память, а приходится городить бенчмарк прямо в коде программы?
Например, потому что такая хрень никому не нужна, а мини-оптимизациями синтетических тестов занимаются только фрики, и их не грех заставить написать лишние десять строчек?

Если реально нужна оптимизация, то используются отдельные инструменты (хотя и что-то встроенное есть). Там уже смотрят, что жрёт память, что расходует проц и т.п. Ибо от двух чисел толку мало. Не говоря уж о том, что подобные замеры нарушают правила написания бенчмарков: мерять нужно что-то одно, а не оценивать всю работу приложения двумя числами.

И вообще, чем спорить, почисти лучше код, как я сказал. Для теста без вывода ничего не мешает закомментировать строку с ним.
Там код примитивный, справишься сам. Ты ж мне подсовываешь Tcl, вот и кушай.

[Добавлено 09.01.2014 23:01:04]:

Зато, тестирование на разных платформах позволяет выявить больше багов
Wise Dragon, специфических проблем будет гораздо больше. Игра не стоит свеч.

Главное не городить грязных виндофильских хаков специально (типа захардкоженного обратного слеша в путях или прямых вызовов Windows API).
И если "хак" нужен, что же ты предлагаешь, не реализовывать фичу что ли?

Предположу, что +"n", по крайней мере, в питоне конкатенация строк — дорогая операция, так как они иммутабельны.
Нулевое поколение, мусор соберётся моментально. Даже у моно сборщик мусора не настолько ущербный, чтобы с OOM из-за этого вываливаться. Ну, не знаю. Странно. Ничем помочь не могу.

[Добавлено 09.01.2014 23:10:54]:

И где оно в шарпе тогда?
Wise Dragon, в атрибутах.

А чтоб написать что-нибудь хотя бы уровня моего калькулятора?
Ты парсинг строк развёл, тут с регулярками нужно будет разобраться. А если писать топорный код, то больше проблем будет с алгоритмом, а не с языком.

А чтоб написать его только средствами, которые встроены в винду изкоробки?
Ты когда-нибудь поймёшь, что винда из коробки предназначена для людей, а не для гиков?

Не знаю как на шарпе, а на Tcl входящего в стандарт языка более чем достаточно для консольных приложений, в том числе и работающих с сетью или файлами. И это всё можно изучить за пару недель.
Что ж ты использование Tcl новичком меряешь по консоли, файлам и сети, а использование шарпа — по всему разнообразию фич, которые, видите ли, зачем-то новичку понадобятся? Консоль, файлы и сеть в дотнете нормально обёрнуты, код простой.

А тебя кто-то заставляет изучать все фичи C++ чтоб кодить на Qt? Да и вообще, так уж ли он сложнее того же шарпа?
Ты много на C++ писал? Я — достаточно много, чтобы видеть кучу проблем у языка. Там что ни фича — возможность отстрелить ногу.

 
 
 
Wise Dragon
Тентакледракон
Сообщений: 7533

09.01.2014 23:21
Инфо | цитировать | линк
Аthаri писал: Ты ж мне подсовываешь Tcl, вот и кушай.
Tcl — простой и понятный язык. Я бы сказал вообще самый простой из широко распространённых языков.

Там код примитивный, справишься сам.
Я не знаю как в C# парсить аргументы командной строки.

Например, потому что такая хрень никому не нужна
Что есть в этой твоей IDE в таком случае, чего нет в приличном текстовом редакторе (типа почти любого линуксового) в паре с консолью (которая в некоторых редакторах кстати встроенная)?

Сворачивание блоков кода, выравнивание, автодополнение и подсветка синтаксиса и так есть.

Кстати в визуалке есть хотя бы поиск и замена по регулярным выражениям?

с бенчмарков. Гугли.
Ну измерь ты. Только код на C компилируй нормальным MinGW, а не встроенной в VS кривотой которая не умеет даже C99. Хотя можешь и ей для сравнения, надеюсь хотя бы такой-то код она осилит?

И если "хак" нужен, что же ты предлагаешь, не реализовывать фичу что ли?
Назови хоть одну фичу, которую нельзя реализовать без грязных хаков.

В крайнем случае есть какой-нибудь #ifdef _WINDOWS_32_, всё платформозависимое надо заворачивать.

Вот например я видел в одной программе нестандартную функцию sprintf_s хотя есть snprintf, имеющаяся в стандарте. Пришлось убирать _s, чтоб оно скомпилировалось.

Даже у моно сборщик мусора не настолько ущербный, чтобы с OOM из-за этого вываливаться. Ну, не знаю. Странно. Ничем помочь не могу.
А сколько у тебя оперативки? Может у тебя тоже бы вываливался если бы её было 1.5 гига свободно?

Ты много на C++ писал? Я — достаточно много, чтобы видеть кучу проблем у языка. Там что ни фича — возможность отстрелить ногу.
А в шарпе не так? Я кое-какие примеры видел, когда знакомый изучал этот C# — там из-за каких-то мелочей типа замены класса на структуру один и тот же код может давать совершенно разный результат и в контрольных заданиях предлагается угадайка.

Ты парсинг строк развёл, тут с регулярками нужно будет разобраться. А если писать топорный код, то больше проблем будет с алгоритмом, а не с языком.
И зачем тебе делать парсинг строк на C#? А регэксп там в коде у меня всего один и простейший.

Просто в Tcl есть нормальное метапрограммирование. Как пример — вычисление всех четырёх арифметических действий единым образом вместо того, чтобы городить switch

В C# так можно?

Аthаri писал: Ты когда-нибудь поймёшь, что винда из коробки предназначена для людей, а не для гиков?
Зачем ты тогда хвастался, что C# в винде доступен изкоробки, если нельзя ничего написать?

 
 
 
Jabberсвободное общение!
North
собаг
Сообщений: 914

10.01.2014 00:27
Инфо | цитировать | линк
Ну опять срач, да госпади ты боже мой. Какая разница аще на чем писать то? Это как спорить, на чем груз перевезти: на тачке, легковом авто или грузовике, или аще пойти на тралик.
 
 
 
Wise Dragon
Тентакледракон
Сообщений: 7533

10.01.2014 00:34
Инфо | цитировать | линк
North, разница есть существенная — речь ведь идёт о том, какой язык учить первым. Этот выбор может повлиять на всю оставшуюся жизнь.
 
 
 
Jabberсвободное общение!
.
 

Сообщений: 1763

10.01.2014 00:35
Инфо | цитировать | линк
Что есть в этой твоей IDE в таком случае, чего нет в приличном текстовом редакторе (типа почти любого линуксового) в паре с консолью (которая в некоторых редакторах кстати встроенная)?
Wise Dragon, автодополнение на порядок более продвинутое. Например, когда я ввожу "int i = ", мне предлагается список всех доступных переменных, методов и прочих объектов, а также стаических членов класса Int32, которые можно присвоить этой переменной. Если жму ещё одно сочетание, то предлагается список всего "на втором уровне", то есть, например, obj.GetHashCode(). Если ввожу идентификатор, недоступный в текущей области видимости, то среда предлагает варианты из других пространств имён, предлагает сослаться на другой проект, предлагает подключить зависимость и т.п.

Проверка кода до компиляции. Если в файле ничего не подчёркнуто, то он гарантированно скомпилируется. Подсветка проблемного, неисполняемого кода.

Рефакторинг. 50 видов оного. Вплоть до выделения части методов в отдельный класс и прокидывания ссылки через другие члены.

Анализ кода: путь следования значения переменной через разные вызовы. Поиск использований.

Генерация кода: конструкторы, GetHashCode и т.п.

И ещё сотни фич.

Но да, консоль — это круто, это хардкорно, это зашибись. Пока программа на 100 строк.

Кстати в визуалке есть хотя бы поиск и замена по регулярным выражениям?
Разумеется. Перловые.

Ну измерь ты.
Зачем я буду тратить время на тупой бенчмарк?

Назови хоть одну фичу, которую нельзя реализовать без грязных хаков.
Из популярного — получить полный window placement (положение во всех состояниях окна, нужно для восстановления положения при следующем запуске). В WPF зачем-то выпилили отключение иконок у окон диалогов. Работа с оболочкой вообще гводзями прибита к винде (получение папки "Downloads", например). Даже в простых программах много подобных мелочей. А если закапываться в дебри, то оказывается, что в дотнете далеко-о-о не весь WinAPI обёрнут.

В крайнем случае есть какой-нибудь #ifdef _WINDOWS_32_, всё платформозависимое надо заворачивать.
Ради тебя одного буду засорять код подобным мусором, ага.

А сколько у тебя оперативки? Может у тебя тоже бы вываливался если бы её было 1.5 гига свободно?
Оперативки много, но программа-то занимает положенный гигабайт.

А в шарпе не так?
Позволю себе скопипастить:

Для меня плюсы — «родной» язык, я начал с него изучение программирования. Как повелось, в книжках по сям массивы определялись через указатели, что мне, тогдашнему школьнику, нехило вынесло мозг; лишь спустя некоторое время я понял суть всех забав с указателями вроде 1["1"]. :) Синтаксис в плюсах ужасный, чего стоят только определение чистых виртуальных методов через "=0", переопределение префиксного оператора инкремента через мнимый аргумент или формат записи указателей на функцию. В плюсах возникают фичи вроде constexpr, которые нужны настолько редко, что мало кто увидит их вживую. В плюсах четыре оператора приведения типа (dynamic, static, const, reinterpret), плюс наследованное из си приведение через скобки, которое временами ведёт себя как одно, временами как другое. В плюсах можно переопределить операторы разыменования, запятой; объект может быть одним типом, а вести себя как другой. Много сложных правил, например, мало кто сходу вспомнит, какие операторы лучше определять как члены класса, а какие лучше определять вне. В плюсах много условностей, про которые нужно помнить: не забывай виртуальный деструктор, избегай оператора неявного приведения типа, не забывай то, не забывай это. Вся эта дикая эволюция выделения и освобождения памяти. И всё это наращивается, наращивается, наращивается.

В шарпе ничего "мифически" не рухнет, если только старательно к этому не стремиться.

Разница между class и struct содержательно в способе присваивания (копирование против ссылки), на практике обычно в выделении памяти (в куче или на стеке). Это базовое знание языка, а не "загадка".

В C# так можно?
На оператор можно сослаться в виде (x, y) => x + y. А дальше уже делай с лямбдой что хочешь. Ну, в ФП ссылка на оператор покрасивее, да.

Зачем ты тогда хвастался, что C# в винде доступен изкоробки, если нельзя ничего написать?
А что, во всех сборках линуксов ко всем перечисленным тобой языкам среды разработки прилагаются?

 
 
 
~
Незарегистрирован

Сообщений: 6720

10.01.2014 00:38
Инфо | цитировать | линк
North писал: Ну опять срач, да госпади ты боже мой
Срач — это когда ролевики в Оффтопике буянили давеча. А тут холивар vulgaris. Причем относительно спокойный.

 
 
 
Рыцарь унылого образа
Raptor-Black
Чёрный-Раптор
Сообщений: 6372

10.01.2014 01:09
Инфо | цитировать | линк
Я так понял, Вайза опасно допускать до подобных тем. Прямо два профессора жестоко спорят чья формула правильнее.
хотелось бы этот концерт на живую послушать.

 
 
 
FurCode1.4: FD[Динозавр-Чёрный-Раптор]cp35asw A !C- D++++/

Форум yiff.ru >> Бейсик и все все всеСтраницы: [<<<][ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ..14 ][>>>]
 
Новое сообщение
Ваш ник
Пароль (если вы зарегистрированы)
Вложение
Добавить еще одно поле для файла
Сообщение

[ Смайлики ]
[ Ubb теги ]
Проверочный код
 
 
  © Justin, Dimoniusis and Jar