AnvilBay Forum

Общение => Софт & Hard => Тема начата: vechislov от 08 Апреля 2013, 01:12

Название: Клуб программистов
Отправлено: vechislov от 08 Апреля 2013, 01:12
Итак, тема для всех тех кто увлекается, или занимается профессионально, или просто любит от нечего делать покодить. Добро пожаловать!

Из всех форумчан мне пока известны 4 программиста: Erik, IgorLutiy, Anton и ваш покорный слуга vechislov.

Зачем? Спрашивать, делиться чем-то новым (программы, исходники, баги) и искать пути решения.

Пока у меня особо ничего нет, но будет чуть позже, как завершу курсовик и выложу свое мастерство тут. Поехали! :)
Название: Клуб программистов
Отправлено: IgorLutiy от 08 Апреля 2013, 01:32
Для начала можно хотя бы выяснить кто на каком языке пишет, какими IDE или программами пользуется.

Начну с себя. Основное увлечение - Паскаль/Дельфи.
Использую в той или иной степени Delphi 7, Delphi XE2, eclipse (java для android), Visual Studio 2010 (c# на будущее).
Кроме Дельфи в остальном совсем-совсем начинающий.
Название: Клуб программистов
Отправлено: Erik от 08 Апреля 2013, 01:57
Visual Studio 2010, немножко java, немножко ассемблер. Мечтаю освоить фитон, но пока это только мечты.
Название: Клуб программистов
Отправлено: vechislov от 08 Апреля 2013, 02:05
Сначала Pascal, потом Delphi 10. Они и идут как основные. Сейчас немного ушел в Visual Basic, и то из-за программы учебной практики, а на будущее планирую Visual C++
Название: Клуб программистов
Отправлено: Erik от 08 Апреля 2013, 02:06
Может, заодно стоит высказаться по поводу литературы? Кто что читает?
Я - Мейерса и Дейтелов.
Название: Клуб программистов
Отправлено: IgorLutiy от 08 Апреля 2013, 02:13
Цитировать
Кто что читает?
У меня только отсортированного по языкам больше 7 гб :)
По Дельфи - в первую очередь Архангельский и Фленов. Первый для укрепления фундамента, второй для интересных идей. Ну а кроме них всё подряд по мере желания, времени и интереса.
По си шарпу Троелсон, Шилдт, если не ошибаюсь. В последнее время некогда их читать.

А кроме книг, видео кто-то смотрит? В первую очередь от Специалиста. По Дельфи смотрю Макрушина с рутрекера.

Ну и интуит - куда ж без него. Там и почитать можно и посмотреть.
Название: Клуб программистов
Отправлено: vechislov от 08 Апреля 2013, 03:58
Я читаю Архангельского по делфи и интуит почитываю, ну и видео там же на интуите.
Название: Клуб программистов
Отправлено: Erik от 12 Апреля 2013, 14:51
Есть задачка.
У меня есть obj файл
формат:
http://en.wikipedia.org/wiki/Wavefront_.obj_file

Который содержит некую более-менее симметричную модель (в данном, конкретном случае - голову)
Надо восстановить симметрию (чтоб было не "более менее").
Дополнительные условия:
 Obj подготовлен для трансляции на directx,  т.е.
-все полигоны - треугольные,
-количество пространственных и УВ координат совпадают.
-Файл содержит только один объект

Это все упрощения, если удасться довести всю эту фигню до ума - можно будет накручивать.

Под все это дело заготовлены следующие классы (конструкторы/ деструкторы опущены)
//используется для хранения координат вертекса. Все равно каких - UV или пространственных
class class_triple_float
{
   public:
   float f1,f2,f3;
}  ;

//описывает полигон.Соответственно v - индекс пространственной координаты, vn - нормали, uv - UV координаты
class class_face
        {
        public:
        int v[3];
        int vn[3];
        int uv[3];
        };

//сам файл на всякий случай храню и текстовое и числовое представление вершин
class class_obj
        {
        public:
       AnsiString o_name; // имя объекта
        vector<AnsiString> v; // пространственные координаты - текстовое представление
        vector<class_triple_float> tr_v; // пространственные координаты - численное представление
        vector<AnsiString> vt; // UV координаты - текстовое представление
        vector<class_triple_float> tr_vt; // UV координаты - численное представление
        vector<AnsiString> f; // полигоны
        vector<class_face> tr_f;
        vector<int> v_vt; // соответствие индексов пространственных и текстурных координат v_vt[i] хранит номер индекс текстурных координат для i-ого вертекса.
       };



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

align_obj - объект класса class_obj, который мы правим
math_vector - считает длину вектора между двумя точками в трехмерном пространстве
align_index - вектор хранящий соответствующие индексы вершин, которые вроде-бы могут быть симметричны.

for (int i=0; i<align_obj.tr_v.size();i++)
        {

        int temp_index=0;
        float temp_vector_lenght=math_vector(align_obj.tr_v[i].f1,align_obj.tr_v[i].f2,align_obj.tr_v[i].f3,align_obj.tr_v[0].f1,align_obj.tr_v[0].f2,align_obj.tr_v[0].f3);
        for(int j=0; j<align_obj.tr_v.size();j++)
                {
                        {
                        //if(i!=j)   ***********************************************âîçìîæíî íàäî áóäåò âåðíóòü
                                //{
                                float temp_vector_lenght2;
                                temp_vector_lenght2=math_vector(align_obj.tr_v[i].f1,align_obj.tr_v[i].f2,align_obj.tr_v[i].f3,align_obj.tr_v[j].f1,align_obj.tr_v[j].f2,align_obj.tr_v[j].f3);
                                if (temp_vector_lenght>temp_vector_lenght2)
                                        {
                                        temp_vector_lenght=temp_vector_lenght2;
                                        temp_index=j;
                                        }
                                //}
                        }
                }



        vector_lenght[i]=temp_vector_lenght;
        align_index[i]=temp_index;
        }

Это грубо, и дает большую погрешность.
Затем мы проходим по массиву align_index и соответственно

if (i!=align_index[align_index[i]])
                {
                align_index[i]=-1;
                align_index[align_index[i]]=-1;
                }
Т.е. две вроде-бы симметричные точки, ссылаются не друг на друга. Значит определили неверно. Записываем им в align_index -1, (-1 используется как признак того, что симметрия для этой точке не определена).

Пока все понятно. А вот дальше начинается свистопляска - у нас есть вектор align_index, часть вершин в котором вообще непонятно на что ссылаются.

Я решил построить массив родственников - т.е. вершин, имеющих с ней общие ребра
family_v [i] .vert_ar[k] - точка i связана с точками из массива vert_ar


for (int i=0; i<align_obj.tr_v.size();i++)
        {

       
                {
                vector<int>temp_family_v;   //временный список родственников
                temp_family_v.clear();

                for(int j=0; j<align_obj.tr_f.size();j++)  //бежим по вектору полигонов
                        {
                        if((align_obj.tr_f[j].v[0]==i)||(align_obj.tr_f[j].v[1]==i)||(align_obj.tr_f[j].v[2]==i)) 
                                {
                                if(align_obj.tr_f[j].v[0]!=i) temp_family_v.push_back(align_obj.tr_f[j].v[0]);
                                if(align_obj.tr_f[j].v[1]!=i) temp_family_v.push_back(align_obj.tr_f[j].v[1]);
                                if(align_obj.tr_f[j].v[2]!=i) temp_family_v.push_back(align_obj.tr_f[j].v[2]);
                                }
                        }

                for(int j=0;j<temp_family_v.size();j++) //выбираем повторяющиеся вершины (если два вертекса принадлежат одновременно нескольким полигонам)
                        {
                        bool sort_flag=true;
                        for(int k=0;k<family_v[i].vert_ar.size();k++)  //
                                {
                                if (family_v[i].vert_ar[k]==temp_family_v[j]) sort_flag=false;
                                }
                        if (sort_flag)
                                {
                                family_v[i].vert_ar.push_back(temp_family_v[j]);
                                }

                        }
                bool puzir_flag=false;
                //сортировка пузырьком
                do
                        {
                        puzir_flag=false ;
                        if(family_v[i].vert_ar.size()>1)
                                {
                                for(int j=0;j<family_v[i].vert_ar.size()-1;j++)
                                        {
                                        if(family_v[i].vert_ar[j]>family_v[i].vert_ar[j+1])
                                                {
                                                int temp_ver_ind=family_v[i].vert_ar[j];
                                                family_v[i].vert_ar[j]=family_v[i].vert_ar[j+1];
                                                family_v[i].vert_ar[j+1]=temp_ver_ind;
                                                puzir_flag++;
                                                }
                                        }
                                }
                        }
                while(puzir_flag);

                }

       }


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

Потом начинаем бегать по массиву и считать ссылки

do     
        {
        int vertex_found=0;

        do   
                {
                vertex_found=0;
                for(int i=0;i<align_index.size();i++)
                        {
                        if (align_index[i]==-1)     
                                {
                                 for(int j=0;j<align_index.size();j++)
                                        {
                                        if((align_index[j]==-1))//&&(i!=j))   
                                                {
                                                 int family_found=0;

                                                for(int ik=0; ik<family_v[i].vert_ar.size();ik++)
                                                        {
                                                        for(int jk=0; jk<family_v[j].vert_ar.size();jk++)
                                                                {
                                                                if(family_v[i].vert_ar[ik]==align_index[family_v[j].vert_ar[jk]])
                                                                        {

                                                                        family_found++;
                                                                        }
                                                                }
                                                         }

                                                if(family_found>=family_max)
                                                        {
                                                        align_index[i]=j;
                                                        align_index[j]=i;
                                                        vertex_found++;

                                                        align_vector[i]=family_found;
                                                        align_vector[j]=family_found;
                                                        family_v[i].vert_ar.push_back(family_found);
                                                        family_v[j].vert_ar.push_back(family_found);

                                                       
                                                        family_max=base_family_max;
                                                        }
                                                  }
                                        }
                                }
                        }
               
                }
        while(vertex_found>0) ;


        family_max--;
        }
while(family_max>=min_family_max)  ;


Т.е. если две вершины имеют достаточно большое число ссылающихся друг на друга родственников - считаем их симметричными.
Алгоритм сложный и косячный, часть вершин ошибочно ссылаются на вершины с теми-же пространственными координатами, (швы) себя самих, и непонятно что еще.
Что посоветуете?
Название: Клуб программистов
Отправлено: Hawker от 29 Декабря 2013, 14:48
Некропост он//
Привет собратьям - программистам))
Есть одна задачка в Delphi 7,очень простая,но как не пытался,результат у меня не выходил :(
Может кто помочь?
собственно,вот:
Дано натуральное число n, действительное х.Надо вычислить
Y=sin x+ sin sin x+...+ sin sin...sinx n-раз.
 
Некропост офф.
Название: Клуб программистов
Отправлено: vechislov от 29 Декабря 2013, 16:56
Тут нужно использовать массивы. Одного одномерного массива типа, например double будет вполнен достаточно. Почему тип массива double? Да, потому что то может быть любым, хоть 100, а sin 100 = 0,98480775301220805936674302458952.

Сразу скажу. Влючать Delhpi мне было лень, поэтому я использовал Tubo Pascal 7.0
var a:array [1..100] of double;
    x,y:double; j,n:byte;
BEGIN
write('Vvedite N: '); readln(n);
write('Vvedite X: '); readln(x);
a[1]:=sin(x);
for j:=1 to n do
 begin
  if (j+1)<n
   then
    begin
     a[i+1]:=sin(a[j]);
    end;
 end;
y:=0;
for j:=1 to n do
 begin
  y:=y+a[j];
 end;
writeln('Znachenie Y=',y);
readln;
END.

Думаю, проблем с пониманием кода возникнуть не должно, но если будут вопросы, то обращайся, отвечу.
Название: Клуб программистов
Отправлено: Hawker от 29 Декабря 2013, 17:07
Спасибо :)
Название: Клуб программистов
Отправлено: Borya71 от 12 Января 2014, 15:40
Вообщем такая задача:
Составить процедуру для определения минимального по модулю элемента одномерного массива длиной 20 элементов. Если минимальные по модулю элементы двух заданных массивов Х и Т отличаются менее чем на 5, просуммировать все положительные элементы обоих массивов и вывести полученные суммы. В противном случае вывести найденные минимальные элементы.

Поиск минимального элемента:
findMin(X, T);
Label3.Caption:='Минимальный элемент: ' + IntToStr(T);

Вопрос в создании массива, через какие компоненты удобнее всего, чтобы сразу было 20 элементов, в принципе можно через SpinEdit (но там придётся прописать какое кол-во элементов мы будем выставлять), а в задании конкретно 20. И пункт "Если минимальные по модулю элементы двух заданных массивов Х и Т отличаются менее чем на 5, просуммировать все положительные элементы обоих массивов и вывести полученные суммы" тут вообще для меня тёмный лес...
Название: Клуб программистов
Отправлено: vechislov от 12 Января 2014, 17:04

Попытаюсь объясниь словами:
Способов ввода можно придумать много. Один ты сам предложил.
Теперь по второму:
Когда найдешь минимальные элементы двух массивов, нужно будет найти их разницу, и если ее модуль больше или равен 5, то идем дальше, если нет, то выводим найденные минимумы.


Чтобы просуммировать все положительные элементы массива делаем следующее: открываем цикл for и в нем проверяем каждый элемент массива положительный он или нет. По факту сравниваем их с нулем. Если положительный, то увиличиваем значение специальной переменной на этот элемент массива.
Для второго массива делаем тоже самое.


Получиться что-то вроде:
raznica:=min1-min2;      {ищем разницу}
if abs(raznica)>=5        {проверяем ее}
   then
     begin
       for y:=1 to 20 do   {ищем сумму положительных элементов первого массива}
         begin
           if mas1[y]>0 then sum1:=sum1+mas1[y];
         end;
       for j:=1 to 20 do   {ищем сумму положительных элементов второго массива}
         begin
           if mas2[j]>0 then sum2:=sum2+mas2[j];
         end;
     end;
Название: Клуб программистов
Отправлено: Borya71 от 12 Января 2014, 18:02
С помощью SpinEdit нельзя другим способом нужно, помогите с кодом я вообще не догоняю
Название: Клуб программистов
Отправлено: Hawker от 06 Марта 2014, 19:17
перед уходом помучаю немножко, можно? :D
Есть одна задачка...тоже в delphi-среде
надо
дано натуральное число n. Выяснить,сколько положительных элементов содержит матрица [a i;j] i=1,...,n;j=1,...,n если a(i j)=cos(i2+n)
Название: Клуб программистов
Отправлено: vechislov от 06 Марта 2014, 22:27
Да все до нельзя просто!
Запрашиваешь у пользователя число n. Далее организуешь цикл ввода массива от i до n и от j до n. Во вложенном цикле вычисляешь значение a(i,j) и присваиваешь его.
Теперь переходим к определению количества положительных элементов. Следует вспомнить, что положительным является число больше нуля и отличное от него. Соответственно, снова организуем цикл считывания массива и во вложенном цикле пишем ветвление, которое по условию будет проверять больше ли элемент массива нуля или нет, то есть a(i,j)>0.
Если значение истинно, то наращиваем специально заготовленный счетчик, например, k. Если значение ложно, то не делаем ничего.
Как только цикл завершиться выводим на экран значение счетчика и завершаем программу.


Код предоставлю позже.


Сообщение объединено: 07 Марта 2014, 01:26
Код примерно такой. Работоспособность не проверял, так как под рукой нет даже Pascala'я


У массива заменить круглые скобки на квадратные!


var a:array[1..100] of real;
    i,j,k,n,p:integer;


begin
write('Введите количесто элементов квадратной матрицы: '); readln(n);
for i:=1 to n do
  for j:=1 to n do
    begin
    a(i,j):=cos(j*j+n);
    end;
for i:=1 to n do
  for j:=1 to n do
    if a(i,j)>0 then k:=k+1;


writeln('В матрице ',k,' положительных элементов');
readln;
end.
Название: Клуб программистов
Отправлено: Hawker от 11 Марта 2014, 13:55
Так с дельфи закончил, теперь в сосноле консоли dos надо
создать файл Example1.bat со следующими параметрами
1) переход на диск e
2) создание каталога work_var1
3) создание в e:\work_var1\ подкаталога work_var1
4) копирование каталога work_var1 в каталог e:\work_var1
c заменой расширения всех файлов на .bak
5) вывести информацию о содержимом каталога на монитор(после нужно сделать паузу)
ps вот не помню команды , забыл блин :(
Название: Клуб программистов
Отправлено: Рызоп от 11 Марта 2014, 14:47
ps вот не помню команды , забыл блин :(

help - список всех команд в командной строке.
%названиекоманды% /? - помощь по определенной команде.

Все просто.
Название: Клуб программистов
Отправлено: Hawker от 11 Марта 2014, 16:45
Я вот 4 пункт не понял какой командой :( сору?
Название: Клуб программистов
Отправлено: vechislov от 11 Марта 2014, 17:04
Насколько помню, да.
Название: Клуб программистов
Отправлено: Hawker от 09 Июня 2014, 13:19
Вот тут есть задачка, парюсь вотЪ :-[

Пусть дана вещественная матрица размером n x m, все элементы которой различны.В каждой строке выбрать элемент с наименьшем значением,затем среди этих чисел выбрать наибольшее. Укажите индексы найденного элемента.
Название: Клуб программистов
Отправлено: vechislov от 09 Июня 2014, 14:36
Организуешь ввод массива, затем ищешь минимальные элементы в каждой строке. И забиваешь эти элементы в новый одномерный массив, после чего организуешь в этом новом массиве поиск максимума.
Что-то в это роде (см. спойлер):

uses crt;
type mas1=array[1..100,1..100] of integer;
   mas2=array[1..100] of integer;
var i,j,k,n,m,min,max:integer;
   a:mas1; b:mas2;

BEGIN
clrscr;
write('Введите размерность массива n'); readln(n);
write('Введите размерность массива n'); readln(n);
writeln;
for i:=1 to n do
   begin
   for j:=1 to m do
      begin
      readln(a[i,j]);
      end;
   end;
writeln('Выполеняется формирование нового массива');
k:=0;
for i:=1 to n do
   begin
   min:=0;
      for j:=1 to m do
         begin
         if a[i,j]<min then min:=a[i,j];
         end;
   b[j]:=min;
   k:=k+1;
   end;
writeln('Определяется максимальный элемент нового массива');
max:=0;
for j:=1 to k do
   begin
   if b[j]>max then max:=b[j];
   end;
writeln('Наибольший элемент нового массива: ', max);
readkey;
END.
Название: Клуб программистов
Отправлено: Hawker от 24 Июня 2014, 14:53
Кто знает, как решить такую задачу..
Дана строка с англ текстом. найти количество слов начинающихся с заданной буквы.
 :-[
Название: Клуб программистов
Отправлено: Саннифер от 24 Июня 2014, 15:53
Кто знает, где находится командная строка? :D нет, правда, очень надо записать в командную строку пару команд, а где она на W-7, неизвестно.
Название: Клуб программистов
Отправлено: Vоid от 24 Июня 2014, 15:57
Пуск => Выполнить => cmd. )
Название: Клуб программистов
Отправлено: Helis от 24 Июня 2014, 21:54
Цитировать
Кто знает, как решить такую задачу..Дана строка с англ текстом. найти количество слов начинающихся с заданной буквы.
А проблема конкретно в чём? Считать строку, вытащить первые буквы из слов или посчитать слова о_О?
Название: Клуб программистов
Отправлено: Саннифер от 24 Июня 2014, 22:11
Сорри, вопрос снят. Я не знала, где искать эдакое в принципе, но добрые люди помогли)))
Название: Клуб программистов
Отправлено: za4ot от 29 Мая 2021, 19:56
Живые в теме остались?
В школе изучал Бейсик, в институте Турбо Паскаль - после эти языки были благополучно забыты. Потом ради интереса взялся за С++, но через неделю понял, что это не моё. Основы HTML освоил довольно прочно и при всём желании забыть его не получается - простенький сайтик накидывается в Блокноте минут за 15. Пытался в JavaScript, но видимо время было неподходящее, не было того, что нужно было реализовать, а без практики язык выучить невозможно. Пытался в VB Script, но это тоже не моё. Когда пару лет назад возникла необходимость написать пару программ для расчетов и работы с текстом подсказали Perl (из-за его возможностей по работе со строками) - и это оказалось моё. Однако, программы были написаны и изучение языка приостановилось, в частности из-за того, что закончились идеи и нормальный интерфейс на нем не сделать, а как говорил один умный человек: " Если вы пишете что-то на Perl и вам нужен интерфейс, то вы делаете, что-то не то." Сейчас, изучив вопрос, решил освоить Python. Честное слово, когда начал читать книги и писать первые программы, создалось впечатление, что Perl и Python писал один и тот же человек, хоть это и не так. В обоих языках привлекает простота установки, написания (читаемый синтаксис - это не относится к однострочникам  :D) и проверки программ, обилие литературы и библиотек и, практически безграничные возможности, и возможность писать программы в Notepad ++ без установки монструозных программ вроде среды разработки Visual Studio. Так что сейчас у меня на компьютере установлены Perl и Python. Perl для особых извращений со строками и Python для всего остального.
Очень интересно читать книги по алгоритмам и реализовывать их в программах - и теория и практика. Причем книги по алгоритмам практически не устаревают.
Название: Клуб программистов
Отправлено: IgorLutiy от 29 Мая 2021, 23:18
Хотел что-нибудь эдакое сказать, а потом передумал. Поэтому просто скажу - иногда продолжаю code monkey :)
Название: Клуб программистов
Отправлено: za4ot от 30 Мая 2021, 11:51
code monkey
Название: Клуб программистов
Отправлено: za4ot от 04 Июня 2021, 22:21
Почему в Python в двух программах с одинаковым кодом выражение if index: в одной программе работает при неопределенной в цикле index, а в другой вылетает при попытке запустить программу.
Проблемный код:
for i in stroka:
    if i != "a":
        index = number.index (i) - 1
if index:

Что-то подсказывает, что нужно делать так:
for i in stroka:
    if i != "a":
        index = number.index (i) - 1
    else:
        index = None
if index != None:


Сообщение объединено: 04 Июня 2021, 22:28
Есть ли какой то аналог goto в Python? Или завершить программу из цикла можно только по sys.exit()?
Название: Клуб программистов
Отправлено: IgorLutiy от 05 Июня 2021, 11:17
Результатом условного выражения должно быть True или False. Логично предположить, что None не относится ни к одному, ни ко второму, следовательно получаем ошибку.
А во втором случае у нас идет сравнение и мы получаем в итоге либо True либо False.

Цитировать
Есть ли какой то аналог goto в Python? Или завершить программу из цикла можно только по sys.exit()?
Насколько я знаю - аналога нет. Вообще конструкция типа goto в современном программировании считается не очень хорошим тоном.
Название: Клуб программистов
Отправлено: za4ot от 06 Июня 2021, 22:29
В одних книгах советуют изучать всё постепенно, долго и скучно, в других советуют сразу начать делать какой-нибудь проект с GUI, классами и прочими приблудами и если когда сразу ничего не будет работать, то только тогда лезть в первоисточники разбираться. Как вы изучали языки постепенно или сразу в пекло?
Название: Клуб программистов
Отправлено: IgorLutiy от 06 Июня 2021, 23:04
Цитировать
В одних книгах советуют изучать всё постепенно, долго и скучно, в других советуют сразу начать делать какой-нибудь проект с GUI, классами и прочими приблудами и если когда сразу ничего не будет работать, то только тогда лезть в первоисточники разбираться. Как вы изучали языки постепенно или сразу в пекло?
Удачный вечер для вопросов. Мне как раз надо немного передохнуть от работы, а это значит, что я могу разлиться мыслею по древу. За сим начну (полагаю, это будет долгая история).

Здесь (https://igorlutiy.pp.ua/about_me_programmar/) можно прочесть краткое описание моего пути.

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

Так вот, основным пути два. Первый - хочу стать крутым погромистом и зарабатывать многа бабла. Второй - мне просто интересно программировать на досуге, как некий вариант творчества.

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

Для первого пути выбирать придется то, что востребовано на рынке. Учить дельфи, руби или перл - не вариант. Джава, си шарп (или плюсы), питон, джаваскрипт или пхп (если под веб разработку) - это их всё.
Начинать им нужно с основ. Ибо чем лучше они поймут основы - тем легче им будет потом совершенствовать свои навыки и осваивать новые технологии. Основы то везде одни и теже. Но нужно при этом кое-что понимать. Извечный вопрос что было яйцо или курица с какого языка начинать учить программирование. Тут можно копий сломать столько, что хватит на войско Македонского. Лично мое мнение, основанное на собственном опыте и на опыте многих уважаемых людей - начинать в этом случае можно или с С/С++ (но это для смертничков, велик шанс обломаться и навсегда возненавидеть программирование, но зато если уж зайдет - то все просторы вам будут открыты) или с Паскаля (который хоть все и обплевывают, но именно для обучения он великолепен, хотя и не только для обучения). Не в коем случае не стоит начинат ьс чего-то вроде питона. Почему? Он слишком простой и у него слишком много всего под капотом. То есть вы научитесь прогать на питоне, но прогать вы уметь скорее всего не будете, то есть вы не будете понимать, что на самом деле там происходит. Слишком высокий уровень. Плюс динамическая типизация, что конечно легко, но чревато при переходе на что-то иное. В общем с питона я бы точно начинать не советовал. Но есть и другие мнения.
Для начала я бы рекомендовал почитать Столярова. У него интересный взгляд на обучение программированию, но на мой взгляд, говорит и пишет он очень толково. Да, предлагает начинать с паскаля, потом переходить на плюсы. Вроде разумно.

Второй путь - прогание как хобби или увлечение. В этом случае вообще всё пофигу, как говорил незабвенный Лобанов. Ведь учим то в кайф. С чего захотели - с того и начали. Как захотели - так и учим. В этом варианте можно учиться как с основ, так и пробуя различные пет-проекты. Типа, а создам ка я свой браузер/текстовый редактор/калькулятор/самописный сайт. Можно так, а можно так. А можно совмещать оба подхода.

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

Ах да, если что - я выбрал второй путь. Для меня прогание это вид творчества. Ну и иногда бывает полезно что-то автоматизировать.



Название: Клуб программистов
Отправлено: za4ot от 07 Июня 2021, 19:55
Цитировать
Началось всё, наверное, еще в конце нулевых. Когда я переводил и писал туториалы для редактора Обливиона. Там был встроенный скриптовый язык, который с каждой игрой становился все больше и больше похож на вполне себе язык программирования. Но главное, этот скриптовый язык давал большие возможности для творчества в игре, для создания модов.
Как мне это знакомо. Особенно выделенная часть. Первая игра, которую я модифицировал это был "Сталкер. Тень Чернобыля". Всё началось с того, что я изменил в скрипте переносимый вес, ибо лут было жалко бросать, логичным продолжением было изменить скрипт усталости ГГ от переносимого веса. Первым скриптом (вернее кусочком скрипта), который я написал была функция, которая генерировала разный лут в карманах убитых НПС в зависимости от того какой у НПС был уровень (новичек, ... , мастер).
Когда стал играть в Х3 Terran Conflict начал собирать свою сборку модов и лишь иногда заходил во встроенный скрипт-редактор, что-то поправить в моде пол себя. И лишь через 8 лет меня прорвало. Я практически переписал всю сборку модов под себя, а те скрипты, которых в принципе не было все написал сам. Это были самые творческие и плодотворные пол года в моей жизни. Такого творческого подъема я никогда не испытывал (спасибо кривым рукам Cycrow, но это у совсем другая история). Сам процесс я иначе как творчество и не рассматривал.

На всякий случай поставил Free Pascal, может случится выручить какого-нибудь школьника или студента (не бесплатно ясен-пень  :D). Книжку Песни о Паскале почитал чутка - интересное чтиво, пригадится, для освежения знаний по Pascal и для изучения Python-а если там есть интересные задачи. Для пробы хотел сделать программу считающую сумму цифр в числе, начал набирать - долго, курсор бесит. Хотел копипастом текс программы ввести, а вот фиг вам. Ладно, думаю, обману судьбу - набрал в Notepad++, сохранил в .pas, открываю, а вот фиг вам русские буквы в пути к файлу нильзя, переименовал, открываю, а вот фиг тебе набор в Notepad++ - русские буквы в программе кракозябры перепечатывай. Отвык я от такого хардкора. Пока скачивал устанавливал наткнулся на статью: "Релиз компилятора Free Pascal 3.2" там первым комментарием к статье было:
Цитировать
>Добавлена поддержка блоков на языке Си
...для возможности плавного перехода тех, кто всё ещё пытается по разным причинам заниматься пердолингом мертвой стюардессы, на нормальный ЯП.

На самом деле там говорилось про это: "Добавлена поддержка C-блоков, напоминающих анонимные методы в Delphi", но общий настрой комментаторов сразу стал ясен.  :D
В общем, на всякий случай пусть будет, есть не просит, а пригодится может - у многих знакомых дети как раз скоро начнут в школе информатику изучать.

В изучении ЯП, как и в изучении чего-либо также придерживаюсь второго пути. В идеале хотелось бы написать что-то вроде пакета решения различных прикладных задач (одно время делал работы по расчету электрических схем и всегда мечтал это автоматизировать, т. к. посчитать 10 вариантов из методички в экселе за 1 день это тот еще квест), небольшую бухгалтерскую программку для личных нужд - пока вообще всё считаю в экселе - в некоторых моментах не совсем удобно, а в некоторых совсем не удобно. Программку для заметок - те что есть либо избыточны, либо уродливы, либо платные. И еще хочу написать хорошую программу для построения векторных диаграмм - единственная, которая приемлемо работает это Vetrox (какой-то студент написал), но со своей тележкой недостатков.
Длинновато получилось, ну и ладно. )))

Заметил интересный факт. Все ЯП, на которых я писал нужные мне программы, а не просто ознакамливался, начинаются с буквы "Р": Pascal, Perl -> Python - это судьба. Ждем появления P, P++ и P#.   ;D

Название: Клуб программистов
Отправлено: IgorLutiy от 07 Июня 2021, 20:30

Цитировать
Заметил интересный факт. Все ЯП, на которых я писал нужные мне программы, а не просто ознакамливался, начинаются с буквы "Р": Pascal, Perl -> Python - это судьба. Ждем появления P, P++ и P#.
Пока можешь попробовать что-то из этого (https://buildwiki.ru/wiki/List_of_programming_languages#P) списка :) Из более-менее известных и актуальных еще PHP остался.
Название: Клуб программистов
Отправлено: za4ot от 08 Июня 2021, 01:00
Lazarus! Это тот же Free Pascal, только с конструктором GUI из каропки. Сношу Free Pascal, ставлю Lazarus. Эх, сам не допетришь, никто не подскажет.  ;D  Одно до конца не понятно. Если верить описаниям, то создавая программу в 32-битной версии она будет работать и на 64-битной системе, а создавая программу в 64-битной версии на 32-битной ее уже не запустишь. Правильно я понимаю? Какую ж тогда ставить?
Что-то этот Lazarus какой-то мутный. С кодировками беда и как это исправить я пока не знаю.  Нужно какой-то модуль типа Encode найти как в Perl, чтоб на лету кодировал в UTF8, cp866 и ср1252. Для простой консольной программы создает проект и сохраняет ее как проект, а не как .pas. Чувствую нужно обращаться к первоисточникам - с ходу не разобраться. По крайней мере в нем копипаст работает и русские буквы в пути не мешают - хоть что-то радует.
Название: Клуб программистов
Отправлено: IgorLutiy от 08 Июня 2021, 15:50
Я использую RAD Embarcadero с Дельфи. Лазарусом пользовался когда-то один раз, чтобы прогать под линукс.

Создавать лучше под 64-битную версию. Сейчас это более универсальный вариант.

Название: Клуб программистов
Отправлено: za4ot от 09 Июня 2021, 00:52
В Lazarus даже простая консольная программа разрабатывается только в виде проекта. Если взять отдельно лежащий файл .pas и открыть его, то автоматом создастся обвязка из файлов проекта по дефолту, а исходный файл .pas превратится в project1.lpi. Поэтому после создания .exe если планируется вносить какие-либо изменения, то файлы проекта удалять категорически запрещено (В общем привыкать нужно долго, но думаю со временем привыкнуть можно). С кодировками разобрался. Связываем проект в инспекторе проектов с модулем LazUtils, а в программу подключаем модуль LazUTF8. Теперь любая строка может быть перекодирована на лету (теоретически, ибо проверил только первый вариант) так:
UTF8ToConsole ('Привет!')  это UTF8 -> cp866 вывод из программы в консоль
UTF8ToWinCP ('Привет!')  это UTF8 -> cp1252 вывод из программы в файл
ConsoleToUTF8 ('Привет!')  это  cp866 -> UTF8 ввод из консоли в программу
WinCPToUTF8 ('Привет!')  это cp1252 -> UTF8 ввод из файла в программу
Насчет работы таких выражений сильно сомневаюсь, но может и сработают:
WinCPToConsole ('Привет!')
ConsoleToWinCP ('Привет!')
В Free Pascal такое вряд ли прокатит, скорее всего, это фишка Lazarus, ибо имена модулей как бы намекают.
Еще одно замечание - такие финты с кодировкой увеличивают размер исходника на 620 КБ. (Программа по подсчету суммы цифр в числе 170КБ, с кодировками 789КБ - почти метр для программы в 10 строк!)
Теперь с чистой совестью можно возвращаться к Python.  :D
Название: Клуб программистов
Отправлено: Аладор от 11 Июня 2021, 13:36
В Lazarus даже простая консольная программа разрабатывается только в виде проекта.
Это не только в лазарусе так, а в любом компилируемом языке программирования.

А вообще я бы посоветовал попробовать Visual Studio от Microsoft, бесплатная IDE, кросплатформенная разработка, поддержка разработки и компиляции на разных языках программирования (python, кстати тоже присутствует), но имхо, стоит попробовать начать с С#, за счет фреймворка разработка на нем сильно упрощается и ускоряется, много документации и т.п. А после него можно будет на xamarin (mono) посмотреть - это по сути тот же C# просто на опенсорсных компонентах, и на нем возможна кросплатформенная разработка, вплоть до мобильных устройств.

Короче можно поставить чистый Visual Studio и выбрать для начала минимальный набор дополнений, а после уже по мере желания можно его расширять, делается это все прямо через инсталлятор, а то чего нет в штатном наборе, почти наверняка можно найти среди доп. пакетов NuGet подобрав подходящий набор готовых библиотек созданных другими программистами, главное следить за типом лицензии.

Цитировать
Еще одно замечание - такие финты с кодировкой увеличивают размер исходника на 620 КБ. (Программа по подсчету суммы цифр в числе 170КБ, с кодировками 789КБ - почти метр для программы в 10 строк!)
Это нормальное явление для языков с не латинским алфавитом, набор кодировки содержит больше символов, вот и раздувается размер.
Название: Клуб программистов
Отправлено: za4ot от 11 Июня 2021, 17:57
бесплатная IDE
Пользуюсь Notepad++.
стоит попробовать начать с С#, за счет фреймворка разработка на нем сильно упрощается и ускоряется, много документации
Если бы мне было лет 20, то непременно начал бы. Для работы мне не пригодится, а для удовольствия и моих целей python-а более чем достаточно. А документации и библиотек для любого языка сейчас предостаточно. Ну и учить параллельно 2 ЯП я не смогу, хоть один освоить бы.
Название: Клуб программистов
Отправлено: IgorLutiy от 11 Июня 2021, 22:38
Цитировать
Ну и учить параллельно 2 ЯП я не смогу, хоть один освоить бы.
Тут все зависит от потребностей. Если для работы, с глубоким пониманием - то учить несколько языков сложно. А если для себя, не сильно углубляясь в детали - это не так уж сложно. Парадигм программирования не так уж много, в остальном основы идентичны, отличается по сути лишь синтаксис.

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

То есть опять же все упирается в цели и задачи. Но здесь как и с обычными языками. Есть те, кто и один с трудом знают, есть много тех, кто знает 2-3 языка. И есть полиглоты.
Название: Клуб программистов
Отправлено: za4ot от 24 Января 2022, 01:50
И еще хочу написать хорошую программу для построения векторных диаграмм
Так таки написал. неделю потратил, читая первоисточники. Правда программой это сложно назвать. Скрипт на Питоне, который из списка векторов выдает готовую векторную диаграмму. Конечно небольшая ручная подстройка нужна (ограничение по осям, задание начальной точки построения и пр.) Но создавать векторные диаграммы в нем гораздо быстрее, чем в той программе, что у меня была. Да и качество графики на порядок лучше. Попутно научился строить линейные графики, опять же быстрее и красивее, чем в Экселе.
(https://i.imgur.com/zaK8odL.png)
(https://i.imgur.com/5WAV8py.png)

Похвастался. Теперь вернемся к нашим баранам. Объясните мне что такое node.js? Куда оно устанавливается? Для чего мне это? Есть такая вещь как Electron (https://www.electronjs.org/) , но она хочет node.js и какой-то npm. Я так понимаю, что это своего рода оффлайн браузер, в котором можно создать проект (программу) и сделать интерфейс на HTML, а логику на JS. И это будет вполне себе отдельное, ни от чего не зависящее приложение, которое можно переносить с компа на комп. так вот я не могу понять как мне установить этот Electron. Читал инструкции по установку, но ни понял ничего.
Хочу начать один проект, но сейчас встал выбор между Electron и интерфейсом на PyQt. В PyQt тоже не всё понятно. Когда сделал простенький интерфейс на нем, то при открытии программы также открывалась и консоль, а у чувака в видеоуроке ничего лишнего не выскакивало. Что я делаю не так?

ЗЫ. С языками более менее определился. HTML, CSS, JS, Питон, Pascal, C++ (Если его движок Unity поддерживает) иначе С#. Думаю этого хватит для любых нужд. Хватило бы и одних плюсов для всего, но я не настолько крут.  ;D Тем более на всех них я когда-то уже писал самые простенькие вещи, кроме С#
ЗЫ2 Стараюсь каждый день кодить примерно по часу, иначе, знаю по своему опыту, через месяц всё забудется.
Название: Клуб программистов
Отправлено: РЕДМЕНЪ от 24 Января 2022, 14:40
Так таки написал.
Здорово, уважаю настойчивый труд.

А глупый вопрос можно? Это такое хобби, или этому есть практическое применение?
Название: Клуб программистов
Отправлено: za4ot от 24 Января 2022, 15:23
Это такое хобби, или этому есть практическое применение?
Это хобби. Но практическое применение есть. Например:
1. Продать свои знания ленивым студентам.
2. Написать программы для своих нужд и облегчить себе жизнь. Например:
а. Программа для построения векторных диаграмм.
б. Программа для генерации курса поворота для курсплея в игре Farming Simulator 15.
в. Программа для расчета стоимости строений в игре CookieClicker, а также автокликер, который кликает по печеньке за меня. (если вам дорого ваше время, то не начинайте в нее играть)
г. Всякого рода конвертеры чего угодно во что угодно + всякого рода справочные таблицы и пр., чтоб каждый раз не искать в сети разные он-лайн калькуляторы и конвертеры, а собрать все в одном месте. (на стадии написания)
д. Каталогизатор, чтоб находить то, что я куда-то положил и забыл и для упорядочивания коллекций книг, методичек, чего угодно. (обдумывается концепт)
е. Записная книжка. У меня есть куча нужной информации, которую я узнаю и через время забываю. Поэтому мне просто необходима такая программа, в которую можно всё быстро записать, а записи структурировать по тематикам и разделам. (Самым ярким примером было, когда я собрал Обливион с сотней модов и это начало работать стабильно и без ошибок. Когда я через год попытался это повторить - а вот фигушки я всё забыл. Даже забыл как работает скрипт для создания .omod, который я же тут и публиковал.)
ж. Остальное ограничено лишь вашей фантазией и нуждами.
Название: Клуб программистов
Отправлено: РЕДМЕНЪ от 25 Января 2022, 22:09
Продать ленивым студентам это я понимаю (при определённой ловкости языка человеку можно продать евонное счастье); плагины для игр тоже понимаю (сам такое делаю). А для чего нужны скажем, векторные диаграммы и зачем для них нужно писать спец.скрипты - не понимаю.  :(
Название: Клуб программистов
Отправлено: za4ot от 25 Января 2022, 22:45
для чего нужны скажем, векторные диаграммы
Это часть решения задачи по расчету разветвленной цепи переменного тока, которую так не любят делать ленивые студенты.  ;D
Название: Клуб программистов
Отправлено: РЕДМЕНЪ от 26 Января 2022, 02:35
Это часть решения задачи по расчету разветвленной цепи переменного тока
Походу я напрочь забыл школьные уроки физики, запишите меня в ленивые студенты  :D .
Название: Клуб программистов
Отправлено: za4ot от 26 Января 2022, 07:56
уроки физики
Возможно. Если не считать, что это электротехника.  ;D
Название: Клуб программистов
Отправлено: РЕДМЕНЪ от 26 Января 2022, 22:06
Мы в школе на уроках физики решали всякоразные задачки по переменному току. Когда-то я ходил на олимпиады, а чичас всё позабыл. 
Название: Клуб программистов
Отправлено: za4ot от 26 Января 2022, 22:27
чичас всё позабыл
Так обычно и бывает. Когда знания не используются, то они забываются.
Название: Клуб программистов
Отправлено: IgorLutiy от 27 Января 2022, 03:19
Цитировать
С языками более менее определился. HTML, CSS, JS, Питон, Pascal, C++ (Если его движок Unity поддерживает) иначе С#
Если в списке языков есть Паскаль, бери Дельфи и не парься с этими электронами, нодами и pyqt. Легче способа создавать программы с графическим интерфейсом я не встречал за 10 лет поиска.
Название: Клуб программистов
Отправлено: Аладор от 27 Января 2022, 13:23
Delphi - это платная среда разработки, и любая созданная прога на пиратской версии считай создается только для себя. Если проект делается хоть сколько-нибудь серьезный, тогда уж лучше использовать Lazarus, хоть он и уступает по набору компонентов Delphi, но зато open source и во многом совместим с delphi. Но учитывая, что сейчас паскаль не особо ценится, проще перейти на C#, в целом, после delphi на него не так сложно перейти, т.к. его авто создатель turbo pascal.
Название: Клуб программистов
Отправлено: IgorLutiy от 27 Января 2022, 15:17
Цитировать
Delphi - это платная среда разработки, и любая созданная прога на пиратской версии считай создается только для себя. Если проект делается хоть сколько-нибудь серьезный
Скучные вы. У Дельфи уже лет пять есть полноценная бесплатная версия. Ограничения связанны только с подключением каких-то навороченных баз данных, с которыми вряд ли кто-то из присутствующих будет когда-либо иметь дело.
И да, za4ot вроде говорит о том, что изучает программирование для себя, а не для работы.
А Lazarus конечно прикольный, но особенно прикольный он был тогда, когда у дельфи не было бесплатной версии и когда она не могла в линукс. Сейчас оба этих недостатка в прошлом. А недостатки Лазаруса - остались.

ЗЫ: а по поводу что ценится - мы же сейчас вроде не о коммерческой разработке. Поэтому какая разница что там ценится? И вообще там джава больше ценится.
Название: Клуб программистов
Отправлено: Аладор от 27 Января 2022, 15:23
У Дельфи уже лет пять есть полноценная бесплатная версия
Не знал этого  :-\ Просто в свое время (тогда еще дельфи был платным), решил посмотреть на шарп, и был удивлен, как много там схожего, и узнал, что создать дельфи и шарпа - одно лицо. Поэтому и написал, что переход на шарп будет в целом не сложным, среда разработки бесплатная, развивается постоянно и быстро. С тех пор больше не смотрел на то, что там у дельфи, вот и не в курсах. Хотя на текущий момент, я уже позабывал, что один язык, что другой  :D
Название: Клуб программистов
Отправлено: za4ot от 28 Января 2022, 21:16
Легче способа создавать программы с графическим интерфейсом я не встречал за 10 лет поиска.
Так в том-то и дело, что интерфейс легче всего создается на HTML с фреймами, стилями, графикой, анимацией, слоями и прочими приблудами, но только в браузере. А Electron позволяет превратить браузерную версию в полноценное независимое приложение. Причем легко можно создать интерфейс практически любой сложности. А простые интерфейсы можно делать на Tkiner или PyQT.
Если в списке языков есть Паскаль
Паскаль скорее из-за ностальгии и потому что на нем школьников учат. Может пригодится. Программировать на нем что-то сложнее консольной программки для конкретного расчета я точно не буду.
Delphi - это платная среда разработки, и любая созданная прога на пиратской версии считай создается только для себя.
Delphi это среда разработки, но также и отдельный ЯП с версии Delphi 7.0 примерно. А вот насчет того в какой версии создана прога, то это  фиолетово. Какие есть способы узнать на пиратской версии или лицензионной был создан экзишник? Думаю, никаких.  :D
Кстати, до меня начало доходить, почему многие советуют начинать учить программирование с языков низкого уровня таких как Паскаль и С.
Например: Дан список, упорядоченный по неубыванию элементов в нем. Определите, сколько в нем различных элементов. На Питоне я могу написать вот так:
print(len(list(set(input().split()))))
Но это совершенно не дает представления как именно это работает. Просто работает. А на языке низкого уровня нужно было написать что-то вроде такого:n=0
a = input().split()
for i in range (len (a)):
    a[i] = int(a[i])
for i in range (len (a)-1):
    if a[i]!=a[i+1]:
        n=n+1
print(n+1)
То есть, чтоб такое написать нужно четко представлять себе алгоритм и как он работает.Фактически языки высокого уровня позволяют писать программы не изучая сами алгоритмы, что не есть хорошо. Весь этот синтаксический сахар отучает человека изучать и разрабатывать алгоритмы и если перед таким человеком встанет нестандартная задача, то он может с ней и не справится. У меня было пару таких случаев, когда для решения задач я пытался найти подходящий сахар, а его не было и пришлось вспоминать, что есть if, for и while.  ;D


Сообщение объединено: 29 Января 2022, 00:49
и на закуску шутка юмора.
(https://i.imgur.com/imfeUSw.jpg)
Название: Клуб программистов
Отправлено: IgorLutiy от 29 Января 2022, 02:36
Цитировать
Так в том-то и дело, что интерфейс легче всего создается на HTML с фреймами, стилями, графикой, анимацией, слоями и прочими приблудами, но только в браузере. А Electron позволяет превратить браузерную версию в полноценное независимое приложение. Причем легко можно создать интерфейс практически любой сложности. А простые интерфейсы можно делать на Tkiner или PyQT.
Электрон это тормознутое говно, от которого плюются все, кто в здравом уме. Потому что тянет за собой почти полноценный браузерный движок. Хромовский, который сам по себе тормознутое нечто. Кроме того для этого еще придется разбираться с нодой. То есть оно конечно можно сделать, но... Кинтер и ПуКТ - это уж точно не простой способ создавать интерфейсы. Говорю же - я всегда искал возможность легко делать программы с GUI и вариантов лучше дельфи не встречал. Конечно с условием знакомства с паскалем. Потому и предложил такой вариант. Но хозяин барин.

Цитировать
Паскаль скорее из-за ностальгии и потому что на нем школьников учат. Может пригодится. Программировать на нем что-то сложнее консольной программки для конкретного расчета я точно не буду.
Дельфи это тот же паскаль. На нем делают все что угодно уже не первый десяток лет. Но - хозяин барин.

Цитировать
Delphi это среда разработки, но также и отдельный ЯП с версии Delphi 7.0 примерно
Это формально. По сути это тот же паскаль с дополнительными плюшками, кои накопились за столько лет. Но основа все та же - объектный паскаль.

Цитировать
Кстати, до меня начало доходить, почему многие советуют начинать учить программирование с языков низкого уровня таких как Паскаль и С.
В целом верно, но даже твой второй пример все еще слишком высокоуровневый) А первый - это да, сахар питонячий. Но без алгоритмов даже на питоне далеко не уедешь. Просто он позволяет во многих ситуациях пройтись по верхам, не заглядывая внутрь. И да, поэтому с него начинать учить программирование плохо.
Название: Клуб программистов
Отправлено: Аладор от 29 Января 2022, 15:52
Так в том-то и дело, что интерфейс легче всего создается на HTML с фреймами, стилями, графикой, анимацией, слоями и прочими приблудами,
Поэтому и появился XAML. Разметка в стиле xml, с подключением стилей и прочих дизайнерских приблуд.
Название: Клуб программистов
Отправлено: za4ot от 30 Января 2022, 22:58
Электрон это тормознутое говно, от которого плюются все, кто в здравом уме. Потому что тянет за собой почти полноценный браузерный движок. Хромовский, который сам по себе тормознутое нечто.
Это мне известно, но для тех приложений для которых он мне нужен его скорости более чем достаточно. К примеру, для записной книжки не нужна скорость "плюсов".  То что он ресурсов жрет, так у современных компьютеров и процессора и оперативки с избытком.
Кроме того для этого еще придется разбираться с нодой.
Сильно разбираться с ней нужды нет. Только как установить Electron. node.js это просто интерпретатор JS позволяющий запускать скрипты не в браузере, а в командной строке. Для простых и не очень скриптов можно пользоваться тем, что есть "из каробки".
То есть оно конечно можно сделать, но... Кинтер и ПуКТ - это уж точно не простой способ создавать интерфейсы.
Насчет Кинтера соглашусь. А если сравнивать Делфи, Лазарус, Визуал Студио и КТ Креатор, то смысл одинаковый. Накидываешь на форму элементы и добваляешь код, как и в любом другом визуальном редакторе. Даже вроде есть такой устоявшийся термин как "интерфейс на кнопках или на формах" Кстати, нашел сегодня на сайте Делфи интерфейсные библиотеки из Делфи для Питона.
Дельфи это тот же паскаль.
Не совсем. Плюшек сильно много уже накопилось. Кстати, на форумах многие ругают Делфи за то, что разработчики, в погоне за нишей мобильных устройств, в последних версиях языка, начали его уродовать добавляя какие-то не такие, по мнению истинных дельфинистов структуры, не сильно вникал. Еще жаловались, что в делфи плохо реализована работа с БД, но тут я далек от понимания.


В общем, для себя я определился, что писать для ВЕБ и всякие клиент-серверы я не буду. Уже не тот возраст, чтоб всё это освоить успел. (Эх, где мои 20 лет?  ;D ) Сосредоточусь на десктопных приложениях: Delphi, Visual Studio, Electron + JS (при необходимости можно Про версии достать на халяву, не думаю, что с этим возникнут проблемы  :D ) и скриптах для быстрых расчетов и небольших программок "на коленке": Python (потому что это быстро и легко), ну и НТМL CSS как бы само самой разумеется и немножко Latex для красивых формул. Electron + JS выираю еще и потому что, лично я, смогу сделать (если разберусь как) на нем что-то полностью рабочее и быстро, и этим можно будет пользоваться, а со временем переписать на других языках. ЯП существует более 600 и у всех свои плюсы и минусы. Нужно перестать болтаться как известная субстанция в проруби и заняться делом. Думаю этого набора хватит на все случаи жизни.
Название: Клуб программистов
Отправлено: IgorLutiy от 30 Января 2022, 23:53
Цитировать
А если сравнивать Делфи, Лазарус, Визуал Студио и КТ Креатор, то смысл одинаковый. Накидываешь на форму элементы и добваляешь код, как и в любом другом визуальном редакторе.
Работал со всеми четырьмя. Суть одна, удобство разное.

Цитировать
Не совсем. Плюшек сильно много уже накопилось.
Накопилось, да. Но основа все та же. Человек который пишет на паскале без проблем сможет писать на дельфи. Главное чтобы это не был какой-нибудь PascalABC.

Цитировать
Еще жаловались, что в делфи плохо реализована работа с БД
Дельфи изначально затачивалась под работу с базами данных и всегда этим выделялась. То кто подобное сказал - видимо сильно далек от дельфи.
Название: Клуб программистов
Отправлено: za4ot от 11 Февраля 2022, 01:52
Итак, начнемс. Краткое вступление. Скачал бесплатную версию visual studio и стал пытаться скачать бесплатную версию delphi. Почему стал пытаться? Да потому, что меня настойчиво попросили создать аккаунт. Что я аккаунтов за свою жизнь мало создал. Но не тут-то было. Раз пять регистрация не проходила из за нарушения каких-то токенов безопасности. Потом оказалось, что номер телефона тоже нужно указать, но вот в каком формате его указывать нигде не написано. Методом тыка перепробовал все что можно и регистрауия прошла с чем-то вроде +3 (095) 7654321. В письме, в котором пришла ссылка на скачивание конечно же не было никаких данных моего аккаунта и поэтому теперь я и понятия не имею какой там логин, пароль, имя организации и номер телефона.
Следующим неприятным моментом были он-лайн установщики, которые закачивают установачные файлы непосредственно перед установкой в совершенно неожиданные места на жестком диске. Тут следует пояснить 2 момента. 1-й. Я всегда стараюсь использовать софт, который можно устанавливать в оффлайн режиме (пунктик такой) и если я ставлю какой-то большой пакет, то стараюсь делать полную установку на всякий случай, хотя бы первый раз пока точно не буду знать, что нужно, а что нет. 2-й на диске С: у меня было свободно 20 Гб места при размере диска в 50Гб. При попытке установить Делфи даже на диск D: мои свободные 20 Гб просто исчезли. Делфи занимает где-то 16 Гб + 8 Гб распакованных архивов. Чисто для поржать запустил установку Визуал Студио, чтоб узнать сколько нужно будет места под него. После того как были отмечены все нагрузки это недоразумение запросило у меня 113Гб места (113 Гб, Карл!) чисто для себя + неизвестно сколько для того, что оно собиралось тащить за собой. А тащить оно собиралось немало: node.js, python, виртуальную машину java, библиотеки для разработки под Андроид, движок Unity3D (движок, Карл!), и еще Акатош знает что еще. И тут я понял как ничтожно малы мои  50Гб на диске С:. Думал обойтись малой кровью и почистить WinSxS и установить Делфи. На всякий случай создал в Руфусе установочную флешку. Попутно узнал что такое Dism и с чем его едят, но он не помог. Тогда помытался загрузиться с ремонтной флешки и о чудо какое-то недоядро ХР запустилось на моем АМДх64. Дальше Unlocker и чистка WinSxS. Теоретически должно было сработать ведь там резервные копии. Но после такого вмешательства система запустилась, но корме черного квадрата Малевича ничего мне не показывала. Пришлось придумывать на ходу. Скопировать всю нужную информацию на внешний ХДД, снести все, выделить под С: больше места и установить всё по новой. Одна лишь проблема на внешнем ХДД 475Гб, а нужной информации 600 с лишком. Это был тот еще квест по отсеиванию, просеиванию и копированию. Наконец, спустя два вечера, можно было приступить к установке. Воткнув установочную флешку в порт и попытавшись с нее загрузиться я натолкнулся на тот факт, что флешка записана для UEFI, а у меня Legacy (ну забыл я). После 10 минутной панической атаки, загрузившись с ремонтной флешки я Руфусом переписал установочную флешку в нужном формате. Система установилась перед работой за 20 минут пока завтракал.
Придя с работы принялся за настройку. Сразу заглянул на диск С: - всего занято 13Гб, размер папки WinSxS 6Гб. Однако. Единственной приятностью оказалось то, что система добравшись до Интернета в фоновом режиме сама скачала и установила все драйвера без моего участия. А потом опять начался трэш. Сразу ставлю АнвирТаскМенеджер и
Clean Master 1.0. Так вот при запуске АнвирТаскМенеджер система сказала, что приложение заблокировано Администратором и работать не будет (блин ну а я тогда кто?) - оказалось, что мастдай принудительно блокирует старые версии программ. Clean Master 1.0, которым пользовался не один год, система втихую обновила до последней версии, а последняя версия там просто гуано. Но эти неприятности я преодолел скачав последний АнвирТаскМенеджер заменив Clean Master на Dism++ и пакет Glary Utilities. Перечитать пришлось просто гору информации. Я уж было решил расслабится и поставить остальной софт как тут получил сообщение: ваша система больше не поддерживается обновитесь до новой версии и выбор вариантов: сейчас, ночью, назначить время. Деваться было некуда. Теперь у меня версия 20Н чего-то там и что поразительно активация не слетела. После установки новой системы у меня внезапно стало на 30Гб меньше места. Эта сволочь умудрилась запихнуть мою только что установленную систему размером в 13Гб в Виндоус.олд размером 30Гб (Вот как!?) После этого я разозлился и выкорчевал автоматическое обновление виндоус совсем, с корнем, навсегда, под чистую. Для диска С: я выделил 230Гб и решил ставить весь софт на него. При этом возникла проблема с установкой Питона. Он никак не мог установить библиотеки туда куда ему было нужно, хотя на диск D: ставился с пол тычка. После 4-х установок-удалений и плясок с бубном удалось его образумить (Установить не в Програм файлс, а в корень диска ибо в Програм файлс был запрет системы на запись и библиотеки туда тупо не могли установится. Не бред ли это?) Вообще вот эта система, когда программы устанавливаются не в одну папку, а размазываются ровным слоем по десятку папок в разных местах мне недоступна для понимания. Напуркуа так было делать? Потом установил node.js, установил Электрон, Электрон-пакаджер и попытался по инструкции создать приложение. А вот фиг вам! Там версия электрон не та, там еще какая-то приблуда не соответствует. Взял простеникий сайтик - обернул его в main.js окошко открывается всё работает, но вот .exe из него сделать никак не получилось. Расстроился, Электрон снес начисто. Меня осенило - напуркуа я буду сайты в .exe заворачивать если на любой системе есть браузер. Напишу приложение на JS и его тупо можно будет запускать в любом браузере и пользоваться как пользуются JupiterNotebook-ом. В общем сейчас у меня есть Делфи, Лазарус, Перл, Питон, Нода и Пеллес С. Я даже сегодня смог на С простенькую консольную программку скомприлить. Пригадится. А то что я пароль 3 дня вспоминал так это по закону подлости - при переустановке системы файлик с логинами паролями обязательно остается на рабочем столе и благополучно изничтожается. ;D Все эти приключения заняли у меня общим счетом неделю времени. Зато сколько нового я узнал!  :D
Название: Клуб программистов
Отправлено: Аладор от 11 Февраля 2022, 16:23
А тащить оно собиралось немало: node.js, python, виртуальную машину java, библиотеки для разработки под Андроид, движок Unity3D (движок, Карл!)
А зачем ставить все что надо и не надо?  :D У меня VS занимает 12Гб, 8,5 на диске D и 3,5 на С.

Цитировать
Думал обойтись малой кровью и почистить WinSxS
Самый безопасный способ, это штатной очисткой диска, просто указав очистку обновлений и точек восстановления.
Цитировать
А вообще, чаще всего "раздувается" папка installer. Если часто ставить много софта, то все установочники остаются там, особенно жирная эта папка, если доступ к компу есть у детей, и они умеют устанавливать игры и софт, а удалять через панель управления - нет.


На всякий случай создал в Руфусе установочную флешку
С недавних пор перешел на Ventoy. Т.к. мне по работе порой приходится работать с различными ос, то перезаписывать, либо таскать кучу флешек, мне надоело, и как раз попался на глаза вентой. Фишка в том, что он отрезает от флешки раздел примерно в 50Мб, и прописывает там свой загрузчик. А на основной раздел, просто скидываешь нужный образ (или несколько), без распаковки - обычный iso. И все, дальше грузишься с флешки и выбираешь нужный образ. В качестве "лечебного" использую WinPE Strelec, там много различного диагностического софта.

Цитировать
Установить не в Програм файлс, а в корень диска ибо в Програм файлс был запрет системы на запись и библиотеки туда тупо не могли установится. Не бред ли это?
А установку точно с правами администратора запускал? Или может быть у тебя раньше был uac отключен и ты успел забыть о его существовании?

Цитировать
А то что я пароль 3 дня вспоминал так это по закону подлости - при переустановке системы файлик с логинами паролями обязательно остается на рабочем столе и благополучно изничтожается.
Давно перешел на использование KeePassXC. База паролей хранится локально, но для страховки синхронизируется с моим облаком, а для удобства, с облака подтягиваю в телефон. Из плюсов, есть расширение для браузеров, через которое можно подтягивать пароли из базы, а по комбинации клавиш, можно и вовсе в любое приложение ввести пароль. Например в клиент ESO, или Steam.

P.S. А вообще, перед любой "сомнительной операцией", нужно делать бэкап. Я пользуюсь AOMEI, бесплатной версии хватает с головой, но можно и спиратить фулл. Сделал бэкап, и можно "ломать" систему, и если что-то пойдет не так, всегда можно развернуть ее назад.
Название: Клуб программистов
Отправлено: za4ot от 11 Февраля 2022, 18:06
А зачем ставить все что надо и не надо?
если я ставлю какой-то большой пакет, то стараюсь делать полную установку на всякий случай, хотя бы первый раз пока точно не буду знать, что нужно, а что нет.
А установку точно с правами администратора запускал? Или может быть у тебя раньше был uac отключен и ты успел забыть о его существовании?
Чего не помню того не помню. Но это дико для любого чиха отдельно указывать запуск под админом, хотя у меня учетная запись админа.
А вообще, чаще всего "раздувается" папка installer. Если часто ставить много софта, то все установочники остаются там
Нужно будет заглянуть что у меня там.
Давно перешел на использование KeePassXC.
Не доверяю я пароли чужим программам. Мало ли. Каждый разраб бьет себя пяткой в грудь, что его программа никуда твои пароли не отсылает.  ;D
Название: Клуб программистов
Отправлено: Аладор от 11 Февраля 2022, 18:54
Но это дико для любого чиха отдельно указывать запуск под админом, хотя у меня учетная запись админа.
Отключаешь uac, и запросов не будет. Но я наоборот, лучше буду знать, когда то, чему я не хочу давать много прав, вдруг решает расширить свои возможности.

Не доверяю я пароли чужим программам. Мало ли. Каждый разраб бьет себя пяткой в грудь, что его программа никуда твои пароли не отсылает. 
Так ты их уже доверил, оставив на рабочем столе. Но я и сам так же, не особо доверяю, потому и выбрал open source решение, где уже давно бы народ нашел причину не доверять создателю, а keepass - потому что еще и локальная бд, а значит, если совсем боязно, то можно фаерволом заблочить доступ в сеть.
Название: Клуб программистов
Отправлено: za4ot от 14 Февраля 2022, 23:02
Посоветуйте хорошие книги. Кто по чем учился? Интересуют такие области как: Паскаль, Делфи, С, Алгоритмы, Ява Скрипт, Питон. А то я скачал библиотеку программиста в 6000 книг и слегка растерялся - сколько ж времени уйдет пролистать каждую.  ;D
Название: Клуб программистов
Отправлено: IgorLutiy от 15 Февраля 2022, 14:37
Паскаль, это однозначно и без вариантов Песни о паскале (https://oleg.derevenets.com). После того, как эта книжка будет пройдена или, по крайней мере, все что есть в ней покажется детским лепетом, можно браться за первый том Столярова "Азы программирования" (http://www.stolyarov.info/books/programming_intro).

По питону книг слишком много и я бы не советовал начинать с них (хотя ты вроде уже и не начинающий?). Лучше начинать с онлайн-курсов, типа Поколения питон (https://stepik.org/course/58852/promo) на Степике. А уже по ходу дела шлифовать книгами. Их очень много. Есть много хороших, но как и что зайдет начинающему - мне уже несколько сложно судить.

А вот по computer science могу одну вещь однозначно порекомендовать - Гленн Брукшир Дж. - Компьютерные науки. Базовый курс, 13-е издание. Пока это наверное лучшее, что мне попадалось.

По алгоритмам тоже есть куча хороших книг. Но там я еще толком не разбирался, поэтому что-т опрям конкретное не смогу указать.

Название: Клуб программистов
Отправлено: za4ot от 15 Февраля 2022, 17:53
Песни о паскале.
Именно по ней и собираюсь учится. Еще нашел древнюю книгу по алгоритмам с реализацией на Паскале - я о таких математических приемах в жизни никогда не слышал, столько нового узнал. В современных книгах таких задач не встречал ни разу.
Лучше начинать с онлайн-курсов
Пока решаю задачи тут: http://pythontutor.ru Теории дают минимум, но когда есть направление в котором двигатся, то интернет и книги помогают. Уже почти закончил курс. Потом найду еще какой-нибудь.Осознал, что алгоритмы и математика неразрывно связаны. Не зная математики, не сможешь разработать более менее нормальный алгоритм.Попадаются задачи в которых я просто не могу составить алгоритм потому что не могу переформулировать задачу в понятном для меня виде. Например задача "Коровы в стойла" https://www.cyberforum.ru/python-beginners/thread2683659.html До сих пор не могу понять как оно работает.
Название: Клуб программистов
Отправлено: IgorLutiy от 15 Февраля 2022, 18:19
Цитировать
Потом найду еще какой-нибудь.
Я лучше Поколения курса для начинающих не встречал. До этого был еще один курс, тоже на Степике, по которому я сам учился, но с появлением Поколения лавры первенства уверенно перешли к нему. И у него есть продолжение, для чуть более продвинутых. А в этом году обещают и третью часть, с ООП.

Цитировать
Например задача "Коровы в стойла"
В решении задач самое главное понимать зачем они нужны. Решение задач ради решения задач может оказаться путем в никуда. Более того, часто сложности бывают искусственными, вызванными проблемами с тем, что авторы не могут нормально сформулировать условия. И приходится больше сражаться с этим, чем с самой задачей. Яркий пример был в прошлогоднем Advent of Code. Задачи в плане решения довольно простые, но условие закручено так, что я решал только после их нормального объяснения на пальцах моим товарищем. Хорошего в этом мало, на самом деле.
Название: Клуб программистов
Отправлено: za4ot от 15 Февраля 2022, 22:44
А вот по computer science могу одну вещь однозначно порекомендовать - Гленн Брукшир Дж. - Компьютерные науки. Базовый курс, 13-е издание. Пока это наверное лучшее, что мне попадалось.
Не совсем понимаю, что такое computer science. Но книгу скачал. Нашел еще вот такой 4-х томничек:
http://www.stolyarov.info/books/pdf/progintro_e2v1.pdf
http://www.stolyarov.info/books/pdf/progintro_e2v2.pdf
http://www.stolyarov.info/books/pdf/progintro_e2v3.pdf
http://www.stolyarov.info/books/pdf/progintro_vol4.pdf
Посмотри как время будет. На вид вроде более менее серьезная книга.Жаль, что бумажные книги сейчас бешеных денег стоят.
Решение задач ради решения задач может оказаться путем в никуда.
Если каждый день набирать примерно похожий код, то это хорошо помогает заучить базовый синтаксис (а то я в 17-м году в танки играть начал и чего-то всё подзабыл  ;D ), попутно освежаю в памяти алгебру, геометрию и новые алгоритмы подучиваю (Никогда и никто мне не говорил, что квадрат натурального числа N равен сумме N нечетных числел: 2**2 = 1 + 3; 3**2 = 1 + 3 + 5; 4**2 = 1 + 3 + 5 + 7 и т. д. Для меня это было открытием. Есть такая же формула и для куба. Ни в школе, ни в универе об этом никто не упомянул. Прочитал об этом вчера в книге 89-го года.) Потом задачи уже буду писать те, которые мне для использования нужны в повседневной жизни.
Более того, часто сложности бывают искусственными, вызванными проблемами с тем, что авторы не могут нормально сформулировать условия.
Часто с таким сталкиваюсь. Стараюсь, конечно, решить, но если не вижу практической пользы, то тупо забиваю.
Название: Клуб программистов
Отправлено: IgorLutiy от 15 Февраля 2022, 23:09
Цитировать
Не совсем понимаю, что такое computer science. Но книгу скачал. Нашел еще вот такой 4-х томничек:
Компьютер сайз - это типа нашей информатики, и даже чуть шире. Что-то вроде основ айти и программирования.
Про первый том Столярова я же писал в предыдущем сообщении и ссылку давал, но в целом у него трехтомник (изначально был четырех), да. Но Столяров товарищ специфический, его сходу не пройдешь. У него идет обучение на Паскале, потом переход на Си и потом на ассемблер. Потому я и советовал первый том, где про Паскаль. Но базу на момент чтений стоит уже иметь очень хорошую. Иначе можно сломаться.

Цитировать
Никогда и никто мне не говорил, что квадрат натурального числа N равен сумме N нечетных числел: 2**2 = 1 + 3; 3**2 = 1 + 3 + 5; 4**2 = 1 + 3 + 5 + 7 и т. д. Для меня это было открытием. Есть такая же формула и для куба. Ни в школе, ни в универе об этом никто не упомянул. Прочитал об этом вчера в книге 89-го года.
А ты не думал, что никто об этом не говорил как раз потому, что вероятность того, что тебе это где-то понадобиться стремительно приближается к нулю?
Название: Клуб программистов
Отправлено: za4ot от 16 Февраля 2022, 00:05
А ты не думал, что никто об этом не говорил как раз потому, что вероятность того, что тебе это где-то понадобиться стремительно приближается к нулю?
Как бы это могло пригодится если я об этом даже не знал? В школе преподавали формулу сокращенного умножения - (a + b)**2 = a**2 + 2ab + b**2. И никто не говорил, что с помощью нее можно находить квадраты двухзначных чисел в уме. ab**2 = a**2*100 + 2ab*10 + b**2. А я этим пользовался довольно часто.
в целом у него трехтомник (изначально был четырех)
Я чего-то в его изданиях запутался. Скачал вперемешку трехтомник и четырех томник. Какой только лучше выбрать?
Название: Клуб программистов
Отправлено: IgorLutiy от 16 Февраля 2022, 00:40
Цитировать
Скачал вперемешку трехтомник и четырех томник. Какой только лучше выбрать?
Материал в них в целом идентичный, но трехтомник более свежий, а значит исправлены ошибки, найденные ранее. Материал остался тот же, просто он раскидал четыре тома более ровно в три.
Название: Клуб программистов
Отправлено: za4ot от 01 Марта 2022, 22:54
Почитал немного Столярова. Вот пару цитат.

"...эта книга ничему вас не научит, если командная строка ОС Unix не станет вашим основным средством повседневной работы с машиной.
Объяснение этому очень простое. Чтобы стать программистом, вам для начала придётся начать писать программы так, чтобы они работали; потом в какой-то момент нужно перейти от этюдов к попыткам извлечь из собственных программ какую-то пользу; затем требуется сделать последний важнейший шаг довести полезность своих программ до такого уровня, чтобы ими начал пользоваться кто-то кроме вас. Написать сколько-нибудь полезную программу, имеющую графический интерфейс, довольно сложно чтобы это сделать, нужно уже быть программистом, но чтобы им стать, вам, как уже было сказано, нужно начать писать полезные программы. Этот заколдованный круг можно разорвать, выбросив из рассмотрения графический интерфейс, но программы, не имеющие такового и при этом полезные, бывают только в ОС Unix, больше нигде."

"...дистрибутивов Linux вполне достаточно. Кстати, можете использовать появление в вашем хозяйстве нужной операционной системы в качестве проверки собственной готовности к дальнейшему: если прошло три-четыре недели, а ничего юниксоиодобного на ваших компьютерах всё ещё нет, можете не обманывать себя: дальнейшие попытки «научиться программировать» вам просто не нужны."

Я так понимаю, по мнению автора, если человек не использует Unix, то он говно и программистом никогда не станет, даже может не пытаться. Интересно, насколько вы согласны с его мнением? И почему настоящие программы без графического интерфейса могут быть только в Unix? Что за такая дикая неприязнь к Виндоус?

Название: Клуб программистов
Отправлено: za4ot от 08 Марта 2022, 23:03
В общем, раньше писал функции не особо углубляясь в смысл, лишь бы работало. Почитав книжки слегка призадумался, что не всё так просто. Посмотрел как Столяров лихо запускает программы на Паскале в командной строке Unix причем данные передавая параметрами. Просидев весь вечер над первоисточниками, я так таки освоил эту магию на Windows (раньше я, к примеру, в программе по переводу комплексных чисел из одной формы в другую делал бесконечный цикл с проверкой ввода, чтоб не запускать программу много раз, а сейчас могу тупо запускать ее в cmd с параметрами столько сколько мне нужно). Написал процедуру, которая подсчитывает сумму цифр числа. Но так как параметры в программу передаются в виде строк, то я и в процедуру передавал строки. Потом подумал, что это не правильно, что процедура, которая работает с числами требует на входе строки - исправил. Потом начал тестировать. С параметрами из командной строки работает, с переменными работает, а вот с константами не работает, ибо не может вернуть значение. Таким образом я пришел к выводу, что процедуру можно использовать когда нужно над переменной произвести какие-то нестандартные трансформации, которые могут понадобится только в какой-то одной программе (например: найти кубический корень и прибавить к результату два и все единицы заменить звездочками) . А если эти трансформации можно широко применить и в других программах (например: найти ндекс символа в строке), то лучше оформить их как функцию.  Причем, для себя решил, что все параметры в функцию нужно передавать в виде констант, чтоб функция была универсальной и могла работать как с константами, так и с переменными. Пока создал свой модуль и складываю туда отлаженные и протестированные функции с описаниями. Еще один момент с передачей параметров из командной строки. Они все передаются как строки и если функция требует тип char, то естественно переменной типа char мы не можем присвоить тип string поэтому приходится в функциях вместо char использовать string. Чувствую, что это не кошерно, но пока правильного пути нащупать не могу.
Название: Клуб программистов
Отправлено: za4ot от 20 Июля 2022, 22:06
С кодировками разобрался. Связываем проект в инспекторе проектов с модулем LazUtils, а в программу подключаем модуль LazUTF8. Теперь любая строка может быть перекодирована на лету...

...такие финты с кодировкой увеличивают размер исходника на 620 КБ. (Программа по подсчету суммы цифр в числе 170КБ, с кодировками 789КБ - почти метр для программы в 10 строк!)
Как же долго я грыз кактус! Век живи, век учись. Проблема с кодировкой в Лазарусе решается в 2 клика. Правая кнопка мыши - Параметры файла - Кодировка - СР866. Всё! В консоли вся кириллица отображается нормально.
И что самое главное - размер программы от этого не изменяется! Не нужно плясок с бубном и подключением всяких модулей.
Название: Клуб программистов
Отправлено: za4ot от 06 Августа 2022, 22:34
Проблема с кодировкой в Лазарусе решается в 2 клика. Правая кнопка мыши - Параметры файла - Кодировка - СР866. Всё! В консоли вся кириллица отображается нормально.
В дополнение к предыдущему посту. Проверил. Эта фишка работает в Перл, Делфи, Паскаль и С. Если исходник сохранен в ОЕМ866, то в консоли кириллица отображается без проблем. Для Линукса придется изменить кодировку на UTF-8 и заново компильнуть - дело пары кликов. Во избежание возможных проблем при перекодировке исходников советую весь русский текст программы держать в трех разных текстовых файлах в трех разных кодировках: ОЕМ866, СР1251 и UTF8. Подозреваю, что такой метод будет работать в любом ЯП. Пляски с бубном понадобятся только тогда, когда в виндоус программа получает данные из консоли, а выводит в файл, или наоборот. Поэтом методы плясок с бубном для каждого языка знать всё-таки не помешает.
Название: Клуб программистов
Отправлено: РЕДМЕНЪ от 20 Февраля 2023, 13:09
В связи со всеми шумихами со взломами игр за последний год можно глупый вопрос?

А что именно из себя представляет эта самая Денуво и что именно делают таблетки, взламывающие защиту?
Название: Клуб программистов
Отправлено: za4ot от 20 Февраля 2023, 13:52
А что именно из себя представляет эта самая Денуво и что именно делают таблетки, взламывающие защиту?
Это функция в .exe, которая проверяет правильность лицензионного кода. Таблетка это измененный .exe, в котором эта функция переписана так, что она либо не проверяет код, либо любой код считает верным. В некоторых играх/программах приходится вместе с .exe вносить изменения в одну или несколько .dll. Примерно так реализованы все защиты. Различие только в способах шифрования и сжатия .exe - именно расшифровка и распаковка .exe, чтоб добраться до этой функции, и является взломом - потому как саму функцию переписать дело пары минут. Правда потом нужно опять все запаковать и зашифровать как было.  ;D емнип в Денуво как раз сделан упор на шифрование - всё там несколько раз по хитрому зашифровано, поэтому там еще нужно с дампами памяти играться - где-то статья в сети была с подробным примером как это всё делается, но там столько слов незнакомых, что я неосилил.  ;D
Название: Клуб программистов
Отправлено: РЕДМЕНЪ от 21 Февраля 2023, 17:35
Это функция в .exe, которая проверяет правильность лицензионного кода. Таблетка это измененный .exe, в котором эта функция переписана так, что она либо не проверяет код, либо любой код считает верным.
Ну, я хоть и блондинко и порой косплею революционную матросню, но это понимаю.
Почему Денуво считается такой сложной? Что такое "несколько раз шифровать", "с дампами памяти играться"? Как это будет по-простому, по-понятному?
Название: Клуб программистов
Отправлено: za4ot от 21 Февраля 2023, 17:46
По простому денуво нельзя расшифровать в принципе, но когда запускаешь игру, то .exe сам себя расшифровывает и записывается в оперативную память. Поэтому нужно запустить игру, определить область памяти, которую она занимает, сделать дамп (записать снимок памяти в файл), потом работать с этим файлом. Примерно так. Но, конечно всё гораздо сложнее.
Название: Клуб программистов
Отправлено: Аладор от 21 Февраля 2023, 18:00
Почему Денуво считается такой сложной? Что такое "несколько раз шифровать", "с дампами памяти играться"? Как это будет по-простому, по-понятному?
Может знаком с "книгами играми", в которых история разбита на куски и читая книгу нужно переходить по параграфам, чтобы получить историю. Так вот конец истории может быть один, на остальных путях будет смерть. Так и тут, денува, это такая же "разбитая книга", только историю она собирает сама во время загрузки. В оперативной памяти уже готовый итог. Но и он имеет в себе различные ловушки, чтобы нельзя было просто скопировать данные из дампа.
Название: Клуб программистов
Отправлено: za4ot от 21 Февраля 2023, 18:01
В оперативной памяти уже готовый итог. Но и он имеет в себе различные ловушки, чтобы нельзя было просто скопировать данные из дампа.
Вот. Всё правильно. Просто я слов таких не нашел.  ;D
Название: Клуб программистов
Отправлено: РЕДМЕНЪ от 21 Февраля 2023, 18:39
С "книгами играми" знаком, но это ничего не меняет: всё равно ничего не понятно  :-[ .
Название: Клуб программистов
Отправлено: Аладор от 21 Февраля 2023, 18:51
ничего не понятно
Просто это еще одна степень защиты  :D Если ничего не понятно, то и ломать сложнее ;D
Как бы в этом вся фишка. Известен только общий принцип работы - "движение по параграфам", но эти параграфы, в каждой "книге" разные, и соответственно правильный путь, каждый раз новый.
Название: Клуб программистов
Отправлено: Аладор от 21 Июня 2023, 16:44
Устроил небольшую разминку для мозгов и написал классическую интеллектуальную игру "Кто хочет стать миллионером"
https://disk.yandex.ru/d/2eyy2kilUgCoBw
Название: Клуб программистов
Отправлено: za4ot от 21 Июня 2023, 17:27
На чем писал?
Название: Клуб программистов
Отправлено: Аладор от 21 Июня 2023, 17:54
C# WPF
Делал примерно полторы недели по часу - полтора в день.
Название: Клуб программистов
Отправлено: РЕДМЕНЪ от 21 Июня 2023, 20:20
А что делать-то надо?
Название: Клуб программистов
Отправлено: Аладор от 21 Июня 2023, 20:27
Да ничего, можешь просто попробовать сыграть.