Вопросы по программированию

Автор Богдан, 03 Листопад 2007, 11:41:18

Попередня тема - Наступна тема

Edd.Dragon

Цитата: beep_boop від 15 Березень 2008, 18:50:07
Гон. Никто на С++ программить под Линуксом не заставляет.
Так я тоже вроде не заставлял, а предлагал :)


Nikolai

Цитата: beep_boop від 15 Березень 2008, 19:06:27
С++ холивор закончился 2 недели назад ;D
:o А где? Я пропустил! Ужас! :o ???
If you do what you have always done, you'll get what you have always got

βεερ_βooρ

Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Сергій

Допоможіть терміново, сиджу на програмуванні в універі, потрібно в Паскалі написати програмку для обчислення суми цілих чисел від 1 до 100. Питання часу, а я в програмуванні повний нуль, тому буду дуже вдячний якщо хтось допоможе протягом ближчих 30 хвилин.
"Дайте людині все про що вона мріє і тут же вона відчує що це все ще не є все" Іммануїл Кант

Edd.Dragon

#154
Если совсем ноль, то сможешь ли скомпилить потом предложеный тут текст? А если еще при написании кода по памяти здесь будут допущены незаметные синтаксические ошибки? :D


var
  i, sum: integer;

begin
  sum := 0;
  for i := 1 to 100 do sum := sum + i;
  writeln('Сумма чисел: ', sum);
end.


Собственно все...

Или по формуле суммы целых чисел:

begin
  writeln('Сумма чисел: ', (1 + 100) * 100 / 2);
end.

:D

Сергій

Цитата: edd_k від 03 Квітень 2008, 11:04:17
Если совсем ноль, то сможешь ли скомпилить потом предложеный тут текст? А если еще при написании кода по памяти здесь будут допущены незаметные синтаксические ошибки?
Зміг, була одна помилка але я виправив. Зробив за першим зразком і все вийшло. Чи не могли б ви ще помогти для друга з його задачою "Вивести на екран числа від 1 до 10 у зворотному порядку". За відповідь на моє запитання дуже вдячний.
"Дайте людині все про що вона мріє і тут же вона відчує що це все ще не є все" Іммануїл Кант

Edd.Dragon

Я надеюсь за другом очередь не выстроилась? %)


var
  i: integer;

begin
  for i := 10 downto 1 do writeln(i);
end.



Цитата: Сергій від 03 Квітень 2008, 11:15:26
Зміг, була одна помилка але я виправив.
А, сорри, давно на паскале не программил. Поправил и у себя.

Сергій

Цитата: edd_k від 03 Квітень 2008, 11:24:32
Я надеюсь за другом очередь не выстроилась? %)
Друг дуже дякує, черги не буде.
"Дайте людині все про що вона мріє і тут же вона відчує що це все ще не є все" Іммануїл Кант

Edd.Dragon


Богдан

#159
От і я з традиційними декількома дурнуватими питаннями :-)

  • Як зробити анлогін в РНР? Не виходить в мене ніяк.
    Спробував через Query_String. Тобто, після натиснення кнопки "Вихід", до адреси додається хвостик ?unlogin=true, сторінка оновлюється, і трігер на наявність квері стрінга залишає лише поле пароля. Проблема в тому, як цей хвостик з адреси забрати вже після анлогіну :-) Він же лишається. Спробував додати хедер з переадресацією на РНР_селф, але тоді це все не працює.
  • Кукі з логіном зникає одразу ж після переходу на іншу сторінку. Який параметр слід задати в setcookie(), щоб цього не було?
  • Олсо, в мене текст з <textarea> записується в файл чомусь із екранованими символами (перед всіма лапками бекслеши). Функція запису - fwrite()
  • Я фіговий РНР-кодер, але сайт вже ж хочу якось доробити...

Так, спасибі, Bismark тa snegoviK,  за допомогу в попередньому питанні. Я тоді чомусь вважав, що ГЕТ-запити можно відправляти тільки поточному скрипту, а ПОСТ тільки зовнішньому :-)

Bismark

Цитата: Богдан від 15 Квітень 2008, 00:34:16
Як зробити анлогін в РНР? Не виходить в мене ніяк.
Спробував через Query_String. Тобто, після натиснення кнопки "Вихід", до адреси додається хвостик ?unlogin=true, сторінка оновлюється, і трігер на наявність квері стрінга залишає лише поле пароля. Проблема в тому, як цей хвостик з адреси забрати вже після анлогіну :-) Він же лишається. Спробував додати хедер з переадресацією на РНР_селф, але тоді це все не працює.
А методом POST не передається?
Цитата: Богдан від 15 Квітень 2008, 00:34:16
]Олсо, в мене текст з <textarea> записується в файл чомусь із екранованими символами (перед всіма лапками бекслеши). Функція запису - fwrite()
Здається це стандартна можоивість PHP - екранувати всі потенціально небезпечні символи. Цю опцію наче десь можна відключити (параметр magic_quotes_gpc у файлі php.ini, чи може якийсь інший - точно не памятаю), але робити це не рекомендується - на твій сайт будь-хто зможе відправити "поганий" скрипт.

dojik

Вопрос: в Borland C++ Builder 2006 при написании программы все идет нормально (консольная), компилируется, cin >> работает, а вот там, где cout << - просто закрывается. Ради интереса попробовал простейший пример - сложение двух чисел, ввел одно, второе, а вывода нет. Что делать? Причем cоut работает интересно - я случайно переместил его до ввода чисел, так только тогда он заработал - я числа не вводил, а он написал "Сумма равна " и там, где х + у - 257.  ??? ??? ???

FalseMan

программу и примеры в студию :)

dojik

Пишу элементарное, что не идет. Пишу с тела, так что извините за код!
#include <vcl.h> -без этого вообще не компилируется
#inklude <iostream.h> void main ()
{
int x, y;
cin >> x  >> y;     cout << ''summa ravna '' << x + y <<endl;
}

βεερ_βooρ

Цитата: dojik від 26 Квітень 2008, 22:21:26
#include <vcl.h> -без этого вообще не компилируется
1) Когда приводьшь код программы, лучше заключать его в теги code.
2) Убери галочку Use VCL(или как там она называется) при создании консольного проекта

Цитата: dojik від 26 Квітень 2008, 17:29:06
Вопрос: в Borland C++ Builder 2006 при написании программы все идет нормально (консольная), компилируется, cin >> работает, а вот там, где cout << - просто закрывается. Ради интереса попробовал простейший пример - сложение двух чисел, ввел одно, второе, а вывода нет. Что делать? Причем cоut работает интересно - я случайно переместил его до ввода чисел, так только тогда он заработал - я числа не вводил, а он написал "Сумма равна " и там, где х + у - 257.  ??? ??? ???
После вывода суммы 2-х чисел программа просто завершает свою работу, поэтому ты не успеваешь увидеть результат. Запусти программу в консоли - и все будет ок.
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

dojik

#165
Я ж говорю, не поддерживает мой телефон скрипты, как цитировать и делать код?
Из консоли тоже не фурычит - я все пробовал.
Я придумал - просто после вывода добавил ещё 1 ввод.

βεερ_βooρ

Цитата: dojik від 27 Квітень 2008, 14:43:50
Я ж говорю, не поддерживает мой телефон скрипты, как цитировать и делать код?
Теги quote и code - почитай справку.
Цитата: dojik від 27 Квітень 2008, 14:43:50
Из консоли тоже не фурычит - я все пробовал.
Пуск - выполнить - cmd.exe
cd <путь к программе>
<имя программы>

Так ты не пробовал. ;)
Цитата: dojik від 27 Квітень 2008, 14:43:50
Я придумал - просто после вывода добавил ещё 1 ввод.
Т.е. ввел задержку перед выходом.
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

dojik


Bismark


dojik

#169
Якщо ти думаєш, що я намагався зробити це один раз і з одною адресою, ти помиляєшся.
До речі, як вставити таймер, щоб рахував час виконання операції?
Наприклад знаходження всіх простих чисел у заданому інтервалі?

Артемий

Скажите пожалуйста, а правда ли, что для программирования, обязательно нужно класно знать алгебру?? Миф, или не миф? :-\

Vader066

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

βεερ_βooρ

Цитата: Артемий від 11 Травень 2008, 22:55:29
Скажите пожалуйста, а правда ли, что для программирования, обязательно нужно класно знать алгебру?? Миф, или не миф? :-\
Ну школьный курс алгебры надо знать в любом случае, линейная алгебра будет крайне востребована при работе с графикой, теория групп и конечных полей важна для понимания криптографии и теории информации.
Цитата: Vader066 від 11 Травень 2008, 23:12:27
Головне мати логіку
Ну это и слесарю надо, а принцип "главное логика, математика как таковая нам не нужна" никуда не приведет.
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Edd.Dragon

Цитата: Артемий від 11 Травень 2008, 22:55:29
Скажите пожалуйста, а правда ли, что для программирования, обязательно нужно класно знать алгебру?? Миф, или не миф? :-\
Восе не обязательно. Равно как и для вождения атомобиля не обязательно знать физику. До первой аварии ;)

А вообще, как минимум арифметику знать просто обязательно. И при этом не видеть принципиальной разницы в какой системе изъязняться - двоичной или десятичной. А шеснадцатиричная система так вообще должна казаться самой удобной :D

βεερ_βooρ

Цитата: edd_k від 12 Травень 2008, 01:13:32
Восе не обязательно. Равно как и для вождения атомобиля не обязательно знать физику.
Не развращай народ, надо поднять планку на максимум, что бы было куда стремиться ;)
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

H8erdrug

Только начинаю учить C++. Первое домашнее задание, и сращу же столкнулся с проблемой. Были даны задания - написать программу для вычислния курса валют и программу для поиска среднего арифметического из двух чисел. Дело в том, что среднее арифметическое ищется только с парных чисел(например если ввести 5 и 8 то получается 6-единица теряется), про курс валют я вообще молчу(( Подскажите, что нужно вписать для корректной работы. Нам на уроке что-то говорили об этом, но как ни пытался, вспомнить не могу :(

Edd.Dragon

Потому что ты в своей программе оперируешь ЦЕЛЫМИ числами, а надо использовать типы с плавающей запятой. Типы данных - это краеугольный камень программирования. Любая сущность - это данные какого-то типа. Так что, встроенные типы нужно знать на зубок. Это как буквы алфавита - не знаешь, не умеешь писать.

H8erdrug

Сидел в теме ждал ответа.... :) Спасибо, с Вашей помощью разобрался. Вместоint использовал float. ...первый урок как-никак ???

dojik

Цитата: edd_k від 28 Травень 2008, 19:06:41
Потому что ты в своей программе оперируешь ЦЕЛЫМИ числами, а надо использовать типы с плавающей запятой. Типы данных - это краеугольный камень программирования. Любая сущность - это данные какого-то типа. Так что, встроенные типы нужно знать на зубок. Это как буквы алфавита - не знаешь, не умеешь писать.
Хм-хм-хм, кого-то мне это напоминает (1=1.0)

snegoviK

#179
Куча народу, которые мучаются с этим Borland. Вопрос, почему бы не попробовать что-нибудь вроде Microsoft Visual Studio Express Edition? Или лучше бесплатный Code::Blocks или MingW? Или еще лучше, установите параллельно с дистром Windows, дистр Linux, какую-нибудь Gentoo или (K)Ubuntu. Вам же будет легче. Это идеальная платформа для того, чтобы начать программировать. Я не имею ничего против Borland, более того, я никогда не пользовался этим, просто я делюсь своим опытом, а с перечисленным софтом у меня не возникало _никаких_ проблем. Разве что VS довольно сложна в настройке проектов, но это так... тут главное покопаться.


sneg@snegolinux:~$ vim test.cpp
sneg@snegolinux:~$ g++ test.cpp
sneg@snegolinux:~$ cat test.cpp
#include <iostream>

int main(void)
{
        int x, y;
        using std::cin;
        using std::cout;
        using std::endl;

        cin >> x >> y;

        cout << "sum " << (x+y) << endl;

        return 0;
}
sneg@snegolinux:~$ ./a.out
233 233
sum 466


Edd.Dragon

Цитата: snegoviK від 30 Травень 2008, 01:29:46
Куча народу, которые мучаются с этим Borland.
Ну так они и с VC будут мучаться  :)

ЦитатаЯ не имею ничего против Borland, более того, я никогда не пользовался этим
Так а с чего ты решил, что эта IDE мучительна?!  ??? Редактор, дебагер, профайлер, справка - все работает отлично, офрмлено в виде много-оконного интерфейса. Чего с ним мучаться то?

А юзают его например в универах - где нужно сконцентрировать внимание начинающих только на алгоритмах.

snegoviK

Я сужу по кол-ву просьб помочь в настройке или это просто Builder C++ настолько популярна в наших краях?

IDE где нужно сконцентрироваться на алгоритмах? Что-то не вижу связи. Как по мне, то любой редактор отлично подойдёт, тут скорее выбор языка важен, чем платформы.

βεερ_βooρ

Цитата: snegoviK від 30 Травень 2008, 14:29:06
Я сужу по кол-ву просьб помочь в настройке или это просто Builder C++ настолько популярна в наших краях?
Настолько популярна в наших краях.

Цитата: snegoviK від 30 Травень 2008, 14:29:06
IDE где нужно сконцентрироваться на алгоритмах? Что-то не вижу связи.
Ну относительно концентрации на алгоритмах с Билдером увы происходит обратное - народ концентрируется на окошечках и кнопочках VCL :)
Цитата: snegoviK від 30 Травень 2008, 14:29:06
Как по мне, то любой редактор отлично подойдёт, тут скорее выбор языка важен, чем платформы.
Ну не совсем любой, когда у меня курсовой в 2к строк на асме в 5-ти файлах + парочка скриптов и макросов которые автоматически генерируют еще несколько тысяч то без ИДЕ будет реально туго.
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

snegoviK

Цитата: beep_boop від 30 Травень 2008, 15:05:58
Ну не совсем любой, когда у меня курсовой в 2к строк на асме в 5-ти файлах + парочка скриптов и макросов которые автоматически генерируют еще несколько тысяч то без ИДЕ будет реально туго.

Это разве называется "концентрироваться на алгоритмах"? =) Это уже детали реализации. Создание алгоритмов отладка логики это немного другое. Как я уже писал, тут важнее выбрать язык поудобнее.

βεερ_βooρ

Цитата: snegoviK від 30 Травень 2008, 16:48:59
Это разве называется "концентрироваться на алгоритмах"? =) Это уже детали реализации. Создание алгоритмов отладка логики это немного другое.
Просто удобная среда разработки берет на себя значительную часть рутинной работы, позволяя не концентрироваться на мелких деталях; Так как для отладки мне собственно на неправильно реализованном алгоритме и надо сконцентрироваться. Чем больше проект, тем это заметнее :)
Цитата: snegoviK від 30 Травень 2008, 16:48:59
Как я уже писал, тут важнее выбрать язык поудобнее.
Мне надо было побыстрее :) (в смысле скорость работы программы)
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Edd.Dragon

#185
Прошу прощения, я упустил, что под Borland имелся ввиду C++ Builder. Я говорил о древнем Borland C++ :)
А C++ Builder - я считаю извращением. Лучше уж тогда на Delphi писать


Цитата: snegoviK від 30 Травень 2008, 16:48:59
Как я уже писал, тут важнее выбрать язык поудобнее.
Ну как тебе сказать. Воть берем Visual Studio 2005. От среды C++ меня почти воротит, а в среде C# мне комфортно. Хотя непосвященному может показаться, что это же одна и та же среда. Ан нет, для C++ IDE такой же как и был, а под C# встроили нормальный набор ассистов, интуитивных удобных и с прозрачной, предсказуемой работой. Так что даже один и тот де редактор, но настроенный по-разному и с разными плагинами уже не одинаково удобен и комфортен.

βεερ_βooρ

Цитата: edd_k від 30 Травень 2008, 17:05:34
Прошу прощения, я упустил, что под Borland имелся ввиду C++ Builder.
Я почему-то сразу это понял ;)

Цитата: edd_k від 30 Травень 2008, 17:05:34
А C++ Builder - я считаю извращением. Лучше уж тогда на Delphi писать
Извратом билдер я не считаю, но тем не менее всегда предпочитал оному дельфи :) Не знаю почему.
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

snegoviK

#187
Цитата: beep_boop від 30 Травень 2008, 17:04:23
Мне надо было побыстрее :) (в смысле скорость работы программы)

Ну тогда всё понятно. Но я бы отделил эту стадию от той о которой шла речь. Концентрация на алгоритмах, в моём понимании, это стадия создания прототипов. Я бы разделил написание (implementation) любой программы на несколько стадий:

1) Prototyping (На языке типа Haskell или Python, или Lua, что вам нравится. Но это должен быть язык, который максимально изолирует детали, которые не касаются логики алгоритма). В этой стадии мы создаём алгоритм, проверяем его на работоспособность, возможно сравниваем с другими прототипами).
2) Implementation (Когда прототип готов, мы можем его портировать на более быстрый язык, в зависимости от сферы приминения. Например, на ассемблер, на С, на какой угодно язык).
3) Optimization (Оптимизация алгоритма уже в конечном виде, если алгоритм будет использоваться на определенной платформе, возможно, используя какие-то platform/language-dependant хаки).

Впринципе, наличие первого пункта необязательно, но в теории наличие прототипа на языке очень высокого уровня увеличивает его надежность и позволяет минимизировать время, которое будет затрачено на отладке в последующих стадиях. Да и проводить отладку на Haskell, как правило, проще чем например на ассемблере. Если на ассемблере большинство времени занимает создание логики и борьба с UB (Undefined Behaviour), то с Haskell это борьба с компилятором, который очень метко указывает на проблемы в структуре программы.

Под "концентрацией на алгоритмах" я понял именно первый пункт. :)

ЗЫ. vim/jedit + gcc - мой выбор. Если IDE, то использую MVS только потому что он мне достался от универа бесплатно. Особой любви к нему не питаю. Много хорошего слышал о CodeBlocks и Eclipse, они у нас на факе пользуются большой популярностью, т.к. оба бесплатны и работают на Win/Linux.

dojik

Гм, позвольте мне вмешаться со своей "высоты со знаком минус". У нас тут вопросы по программированию, а не тема "3 человека обсуждают высокие сферы: ассемблер против остальных)".

Edd.Dragon

Цитата: dojik від 30 Травень 2008, 21:16:08
Гм, позвольте мне вмешаться со своей "высоты со знаком минус". У нас тут вопросы по программированию, а не тема "3 человека обсуждают высокие сферы: ассемблер против остальных)".
В данном случае обсуждается вопрос на чем удобнее реализовывать что-то простое, что надо сделать быстро на один раз и забыть ;)


Цитата: snegoviK від 30 Травень 2008, 17:23:43
Ну тогда всё понятно. Но я бы отделил эту стадию от той о которой шла речь. Концентрация на алгоритмах, в моём понимании, это стадия создания прототипов.
В том то и дело, что когда надо побыстрее, нет такого понятия как прототипирование. Есть простая задача и ее экстремальный кодинг, когда начинаешь писать и переделываешь в случае необходимости. Тут уже и удобства IDE могут проявиться - одна предоставляет средства рефакторинга, а другая с ухмылкой ждет, пока ты все руками везде заменишь сам.

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

P.S.: Не совсем понял, почему черновик алгоритма не может сразу делаться на конечном языке. И почему ты это называешь прототипированием, если этим словом принято называть проектирование архитектуры, т.е. каркаса, как раз лишенного алгоритмов, но определяющего интерфейсы и из взаимодействие.


Andrii

Вмішаюся в вашу розмову. Я хочу вивчити ПХП, для цього я скачав декілька книг (наприклад Стивен Хольцнер - PHP в примерах (Включая версию 6), А.А. Орлов - РНР Полезные приемы і ін) і є програми Maguma, Komodo, але, як із Явою, виникли проблеми. По-перше, коли включаю комп - зявляється помилка з Apache. По-друге, відкриваю прогу, наприклад Мaguma, починаю писати скріпти (коди взяв з книжки), а воно пише:
ЦитатаPhp parse error: parse error unexpected '='
... і далі пішло. Шо робити?? Киньте може якісь силки на російські сайти і форуми по ПХП

Edd.Dragon

#191
Пока не освоился, снеси глючное и поставь джентельменский набор Denver: http://www.denwer.ru/ - все работает. Это сам сервер Апач, движок php и движок MySQL.

Писать скрипты можешь в любом редакторе. Все естетсвенно ручками, так как в Denver не включены средства разработки. Т.е. готовых шаблонов и модулей оформления сайтов нет. Но для начала обучения лучше именно так. Когда уже разберешься с php, то можешь и переходить к освоению средств разработки - CMS (систем управления контентом). Например, установить Joomla или что-то подобное, в чем и будешь собирать интерфейс из готовых кирпичиков или делать их сам, писать скрипты и т.д.

Andrii

Дякую скачаю:).
Є ше питання, коли це все добро встановлю, в ПХП напишу простий скріпт, то він без нета запуститься, чи треба підключитися, щоб він міг запустити програму?
ПС Тобто Джумлу встановлюєш, а потім все в ній міняєш?
А можна шось створити на подобі Джумли, але простіше?

Edd.Dragon

Цитата: Andrii від 30 Травень 2008, 22:21:27
Дякую скачаю:).
Є ше питання, коли це все добро встановлю, в ПХП напишу простий скріпт, то він без нета запуститься, чи треба підключитися, щоб він міг запустити програму?
А ты почитай по ссылке. Там все просто :)
Делаешь в папке home папку dpk.com.ua и у тебя есть такой сайт. В эту папку и кидаешь index.html или index.php. Только ж браузер должен ломиться не в инет, а на порт твоего локального веб-сервера. В общем в readme все написано.

Цитата: Andrii від 30 Травень 2008, 22:21:27
ПС Тобто Джумлу встановлюєш, а потім все в ній міняєш?
А можна шось створити на подобі Джумли, але простіше?
Ну да, это система управления твоими проектами и их разработкой, в которой есть и уже готовые наработки. Т.е. что-то типа Visual Studio, только для php.

Jumla - это инструмент. А создать можно что угодно и без этого инструмента, руками в Notepad++. Просто для более-менее сложных комплексных задач нужны инструменты, упрощающие работу и автоматизирующие примитивные действия.


snegoviK

#194
Я бы честно рекомендовал Drupal, а не Joomla. Но это только после освоения PHP! Соваться в CMS без хотя бы базовых знаний не советую.

2 edd_k

Про прототипирование. Кто сказал, что нельзя писать сразу на основном языке!? Можно! Еще как можно! Я просто описал другой подход и что я понимаю под "концентрацией над алгоритмами". Здесь нет "нужно" или "не нужно", software engineering это набор рецептов, выбирайте какие вам по душе и вуаля получается бульон. Главное достигать целей.

Почему иногда имеет смысл создавать прототипы на языка высокого уровня? Вот пример Merge Sort на Haskell:


split :: [a] -> ([a],[a])
split xs = splitrec xs xs []

splitrec :: [a] -> [a] -> [a] -> ([a],[a])
splitrec [] ys zs             = (reverse zs, ys)
splitrec [x] ys zs            = (reverse zs, ys)
splitrec (x1:x2:xs) (y:ys) zs = splitrec xs ys (y:zs)

merge :: (a -> a -> Bool) -> [a] -> [a] -> [a]
merge pred xs []         = xs
merge pred [] ys         = ys
merge pred (x:xs) (y:ys) =
  case pred x y of
    True  -> x: merge pred xs (y:ys)
    False -> y: merge pred (x:xs) ys


mergesort :: (a -> a -> Bool) -> [a] -> [a]
mergesort pred []   = []
mergesort pred [x]  = [x]
mergesort pred xs = merge pred (mergesort pred xs1) (mergesort pred xs2)
  where
    (xs1,xs2) = split xs


Код бесстыже спёрт отсюда.

Ничего лишнего. Четкие, коротенькие функции, работает на любом типе данных. Ничего лишнего, здесь идеальная среда для концентрации над структурой алгоритма. Более того с этим кодом можно работать напрямую в консоли Haskell.
Создать такую же среду и такой же элегантный код на С намного сложнее, особенно начинающим программистам. А вот теперь портировать сие с Haskell на С довольно просто, т.к. основная работа над алгоритмом уже сделана. А уже потом можно поработать над оптимизацией определённых элементов программы.


βεερ_βooρ

Цитата: snegoviK від 30 Травень 2008, 17:23:43
1) Prototyping (На языке типа Haskell или Python, или Lua, что вам нравится. Но это должен быть язык, который максимально изолирует детали, которые не касаются логики алгоритма). В этой стадии мы создаём алгоритм, проверяем его на работоспособность, возможно сравниваем с другими прототипами).
А мне тут и прототипировать нечего: Получаем на вход 2 256-битных числа и поехали...
Сложение, вычитание, умножение, деление(самое трудное), not,or,xor,and, сравнение, возведение в степень, возведение в квадрат по модулю, умножение по модулю, возведение в степень по модулю, обратное по модулю. Все алгоритмы давно известны. В том же О. Н. ВАСИЛЕНКО " ТЕОРЕТИКО-ЧИСЛОВЫЕ АЛГОРИТМЫ В КРИПТОГРАФИИ" каждая вторая фраза "Покажем, что алгоритм работает верно."
Цитата: snegoviK від 30 Травень 2008, 17:23:43
2) Implementation (Когда прототип готов, мы можем его портировать на более быстрый язык, в зависимости от сферы приминения. Например, на ассемблер, на С, на какой угодно язык).
3) Optimization (Оптимизация алгоритма уже в конечном виде, если алгоритм будет использоваться на определенной платформе, возможно, используя какие-то platform/language-dependant хаки).
Вот этим я сейчас и занимаюсь.
Цитата: snegoviK від 30 Травень 2008, 17:23:43
Впринципе, наличие первого пункта необязательно, но в теории наличие прототипа на языке очень высокого уровня увеличивает его надежность и позволяет минимизировать время, которое будет затрачено на отладке в последующих стадиях. Да и проводить отладку на Haskell, как правило, проще чем например на ассемблере.
Это в теории. А на практике у меня есть прототипы(т.е. чужие реализации) на С, С++ и Дельфи. Помощь от них в моем случае нулевая.
Цитата: snegoviK від 30 Травень 2008, 17:23:43
Если на ассемблере большинство времени занимает создание логики и борьба с UB (Undefined Behaviour), то с Haskell это борьба с компилятором, который очень метко указывает на проблемы в структуре программы.

Цитата: snegoviK від 30 Травень 2008, 17:23:43
Под "концентрацией на алгоритмах" я понял именно первый пункт. :)
А я подразумевал мысленное прокручивание алгоритма в голове и сравнение его с имеющейся нерабочей реализацией. Мысленная интерпретация так сказать.
Цитата: snegoviK від 30 Травень 2008, 17:23:43
ЗЫ. vim/jedit + gcc - мой выбор.
А мой Kate + fasm(в данном случае)
Цитата: snegoviK від 30 Травень 2008, 17:23:43
Если IDE, то использую MVS только потому что он мне достался от универа бесплатно. Особой любви к нему не питаю. Много хорошего слышал о CodeBlocks и Eclipse, они у нас на факе пользуются большой популярностью, т.к. оба бесплатны и работают на Win/Linux.
Мне Eclipse не понравился. Во-первых 15 эклипсов делали терминальный сервер неюзабельным.
Во-вторых фиговая поддержка мейкфайлов
В-третих отсутствие поддержки autotools
Возможно первое решается покупкой нового сервера - но унивнр у нас бедный, что дала Sun, тем и пользуемся.
Возможно второй и третий пункт решается установкой каких-то плагинов и расширений, но в стандартной поставке KDevelop поддержка autoconf & automake есть. Посему мой выбор.
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

snegoviK

Кстати, очень интересно насколько быстрее/медленнее получилось бы если бы ты написал свои криптографические алгоритмы на С, и скомпилировал с gcc -o2 флажком. :)

Edd.Dragon

Если gcc и g++ одной версии, то и оптимизациия арифметических\логических там одна и та же. Т.е. само тело алгоритма ничем не отличается и оптимизируется одним и тем же оптимизатором.


Цитатано в стандартной поставке KDevelop поддержка autoconf & automake есть. Посему мой выбор.
Расстаривают только множество мелких глюков в интерфейсе вообще и в дебагере в частности :(

No_name

Какая есть хорошая книга по программированию на C++ (не электронная)? желательно чтоб от простого к сложному с подробным объяснением что к чему
спасибо

Edd.Dragon

Цитата: No_name від 04 Липень 2008, 10:49:39
Какая есть хорошая книга по программированию на C++ (не электронная)? желательно чтоб от простого к сложному с подробным объяснением что к чему
спасибо
Сам по себе C знаешь?
Тогда http://www.ozon.ru/context/detail/id/85559/