I would like to present you an article about a new Python library –
PyParadigm. The library enables the creation of experimental paradigms in
experimental psychology. A paradigm consists of different states in which
stimuli are displayed and the user has to react to the stimuli and the
responds. The aim of the paradigm is to define the user’s behavior in the form
of reaction or making decision. Psychologists more often are confronted with
computer-based paradigms and creating such paradigms can require IT knowledge.
PyParadigm is the new library based on declarative approach to build user
interfaces. The authors write that the proposed approach requires less code and
training than alternative libraries. This library works with 2D objects and uses
numpy Python library. The aim of the authors was to achieve ability of writing
paradigms with minimum of code and training. The authors have prepared tutorial
and several examples of most known paradigms. A user can modify the examples or
create his/her own. The author applied the declarative approach to reduce the
amount of the code and increase readability.
The library is divided into four modules:
surface_composition, eventlistener, misc, extras. The surafce_composition is used
to create and display images on the screen.
The misc enables creating the window and drawing images within the
window. The extras module contains functions allowing to use numpy and
matplotlib libraries of Python.
Questions:
1.
What is your opinion about using programming language
libraries by people who are not experienced in programming, e.g. by
psychologists?
2.
Do you use your own software when you conduct the
experiment or you use some publicly available/commercial software? For example,
if you created your own library, you could share a link to it.
3.
One can found a lot of libraries for various
programming language, e.g., on github. When you look for something and want to
use, do you believe, that the library which somebody has uploaded, does not
contain mistakes?
4.
How do you think, is it possible that Python language
will become the only one useful programming language?
1.What is your opinion about using programming language libraries by people who are not experienced in programming, e.g. by psychologists?
ReplyDeleteI think that it is an only possibility for them to use "their own personalized solution". Many libraries have easy documentation and are easy to include to project. Moreover, many programming language like Python are very easy to use...we need only primary knowledge about programming loops. Internet are full of tutorials for everyone who want to start in programming so if someone want, he would for sure do an easy program after one week of learning.
2.Do you use your own software when you conduct the experiment or you use some publicly available/commercial software? For example, if you created your own library, you could share a link to it.
I very often use ready made solution...especially when it's well writen and open source. From time to time when I had to programming on microcontrollers then I'm more careful and checking if I really need external libraries.
3.One can found a lot of libraries for various programming language, e.g., on github. When you look for something and want to use, do you believe, that the library which somebody has uploaded, does not contain mistakes?
I believe that...every program which is written could have bugs. Nevermind if this is very expensive comercial tool or open source library. Every big project are made by over a dozen programmers and not all of them are experienced. One thing is if program working at all, but other if is bugs free.
4.How do you think, is it possible that Python language will become the only one useful programming language?
I don't think so. Everything is changing so todays programming language also will be history sooner or later. Python is also very slow language compare to other so in real time processing Python is just useless or need much more resources than the same program in other language.
Thank you for your answers. I agree with you I think similar to you that every software can have bugs even if it is a commercial product. Python language is currently very popular but I think that within several years, the new language will appear and replace Python. The situation will be similar to C or C++. They were created several decades ago but now they are still in use but not so popular as in the past.
Delete1. What is your opinion about using programming language libraries by people who are not experienced in programming, e.g. by psychologists?
ReplyDeleteWhether the library will be easy or difficult, new or old, simple or complex - a person unfamiliar with programming will have a small problem using it. Of course in my opinion. Not everyone wants to learn to program to use something. The baker bakes bread and the Python library controls the oven. Does this mean that he is to convert soft into the used furnace?
2. Do you use your own software when you conduct the experiment or you use some publicly available/commercial software? For example, if you created your own library, you could share a link to it.
Each of us uses ready-made libraries. Why balance the open door when you can open it and go inside. Ready libraries are a reasonable solution. You just have to think about whether she really does what we need?
3. One can found a lot of libraries for various programming language, e.g., on github. When you look for something and want to use, do you believe, that the library which somebody has uploaded, does not contain mistakes?
Only the one who does nothing is wrong. Each program contains errors - smaller or larger. It also contains errors that the programmer and tester are not aware of. This cannot be avoided. Thus, both the program and ready libraries are not free from defects. See the number of patches for Windows :-D
4. How do you think, is it possible that Python language will become the only one useful programming language?
Over time, every programming language ages. We used to use a simple Basica, Logo, etc. today Java, C ++, C #, Delphi, etc. Python will also grow old and we will start using GLINDA. What is GLIND? I have no idea!
Thanks for your response. I understood your answer for question number one and I agree with you why the baker should convert to be a programmer or person who programs but I asked you about the problem in context of psychologist :D Nowadays, they have to use software! I sometimes have a problem preparing experiment that I want to use some libraries but when I start applying them in my project – not all of them are suitable for me and then I think that it will be easier to write my own - function than to waste time for adjusting ready solution for mine.
DeleteWhat is your opinion about using programming language libraries by people who are not experienced in programming, e.g. by psychologists?
ReplyDeleteIn my work I create psychological experiments and develop them. I have a degree in psychology and computer science. In each institution where I worked, a separate person was employed who wrote scripts. In my opinion, a psychologist is able to implement very simple scripts, which are most often copied from tutorials. However, these more difficult scripts are unfortunately not able to write. We must remember that modern psychological research uses EEG and even fMRI. Correct acquisition of such a signal is difficult. Acquisition is only the beginning of the analysis. The signal must be processed. Processing is also carried out using programming languages. Usually python and matalb.
Do you use your own software when you conduct the experiment or you use some publicly available/commercial software? For example, if you created your own library, you could share a link to it.
I use "psychopath" and "Opensesame". I create my own scripts for EEG signal analysis and processing.
One can found a lot of libraries for various programming language, e.g., on github. When you look for something and want to use, do you believe, that the library which somebody has uploaded, does not contain mistakes?
I found some bugs in the libraries I used to use. But they were in libraries that weren' t very popular. In the most popular libraries I didn't notice any errors. So I try to use the latest versions of libraries such as "psychoPy" and "open Sesame".
How do you think, is it possible that Python language will become the only one useful programming language?
Python is already the most useful programming language. It is a very flexible language that allows a lot of freedom. It can be used for object-oriented, structural and even functional programming. Python, however, seems to be easier to use for a "rookie" and in principle does not require a complicated configuration to start working.
Thanks you for answers. I agree with you that most of psychologists are able to write only a very simple code or do “ copy – paste” from the tutorial. When you have a big project – it is possible to employ team of programmers and psychologist, but what to do, if you are alone and want to do something? :D
DeletePsychoPy has a graphical interface which makes it easier to use than the PyParadigm which I mentioned in my post.
1. What is your opinion about using programming language libraries by people who are not experienced in programming, e.g. by psychologists?
ReplyDeleteI work with biologists who have no experience in programming. I don't see the possibility that programming will be among the things they do. Supporting basic programs in the graphical environment is all they need, if they need to solve some more complicated problem using a computer, then I do it.
2. Do you use your own software when you conduct the experiment or you use some publicly available/commercial software? For example, if you created your own library, you could share a link to it.
When solving problems I mainly use public open libraries. Of course, I also create my own solutions, but I haven't published them yet in the form of my own libraries or software.
3. One can found a lot of libraries for various programming language, e.g., on github. When you look for something and want to use, do you believe, that the library which somebody has uploaded, does not contain mistakes?
I try to choose rather those that are used by a large community and are updated on an ongoing basis. However, this does not give 100% certainty that the software does not contain any error, as shown by the latest case of copying and pasting code from StackOverflow (https://nakedsecurity.sophos.com/2019/10/09/copy-and-paste-sharing-on-stack-overflow-spreads-insecure-code/).
4. How do you think, is it possible that Python language will become the only one useful programming language?
Python is a very popular programming language. However, I don't think it will replace all the others so quickly. We are all able to quote different programming languages that can work better in different applications than others.
DeleteThank you for answers. When I use the software I also check how many times this software was downloaded and how many community members “like” it. StackOverflow is one of the most known forums for the people who program, so the article about copy and paste from StackOverFlow is very interesting.
1.What is your opinion about using programming language libraries by people who are not experienced in programming, e.g. by psychologists?
ReplyDeleteI think it will be a little difficult for them, but the Internet is full of opportunities for learning programming.There are simple programming languages, there is a lot of documentation to help in learning. But this is everyone’s choice, they can either study the documentation and try it for themselves, or ask for help from someone who already knows how.
2.Do you use your own software when you conduct the experiment or you use some publicly available/commercial software? For example, if you created your own library, you could share a link to it.
I sometimes use a turnkey solution for the people I find on the Internet. Sometimes I use my solutions for some repetitive tasks. I think that all programmers work like that)
3.One can found a lot of libraries for various programming language, e.g., on github. When you look for something and want to use, do you believe, that the library which somebody has uploaded, does not contain mistakes?
Of course it contains errors, even programming giants - they have many errors in their software, this is a common situation in IT
4.How do you think, is it possible that Python language will become the only one useful programming language?
I don’t think that the concept of a “single programming language” will exist (unless, of course, this is javascript (just kidding)
Thanks you for your response. Nowadays, there are lot of possibilities to learn programming. I think that for people who do not have at least middle experience with programming, it will be difficult to understand such libraries like PyParadigm. I agree with you that if you work in IT, it is obvious for you that there are errors even in very commercial software.
Delete1. What is your opinion about using programming language libraries by people who are not experienced in programming, e.g. by psychologists?
ReplyDeleteI think it's a difficult task for them. People who want use language library need to know basic knowledge about programming language. Understanding the code can be a heavy task. In some languages the syntax is complicated and the documentation is written in technical language. In python the documentation is very good. There are examples that present results of using a part of code. There are many tutorials to help solve problems. The library presented in article is vary interesting. In my opinion the documentation for beginners is not easy to understand. There are examples but no results of running code.
2. Do you use your own software when you conduct the experiment or you use some publicly available/commercial software? For example, if you created your own library, you could share a link to it.
In my experiment I try to use opensource software. Some software are very good and used by many people such as amateurs and professionals. This software is called Opensesame. I use it to create in a easy way an EEG experiment. It’s written in Python and that my favorite language. Sometimes I need to write own software to do specified task that is not available in public libraries. Unfortunately I did't write any library. I have some functions but they are not ready to publication. Maybe in the future I will combine them to a library and publicate. It's all depends on free time.
3. One can found a lot of libraries for various programming language, e.g., on github. When you look for something and want to use, do you believe, that the library which somebody has uploaded, does not contain mistakes?
I don’t trust code available on repository in 100%. We are people not machines and make mistakes. If code is published in repository many programmers download it and run it on own machines. In many case they can find a bug and report them as issue on code repository page. In some case a bug can be hidden for many years. A good example is a situation presented in article available on DobreProgramy. Link below:
https://www.dobreprogramy.pl/Kod-z-bledem-ze-StackOverflow-byl-kopiowany-do-tysiecy-programow,News,105165.html
4. How do you think, is it possible that Python language will become the only one useful programming language?
I don’t think so. Python is a script language and need an interpreter to translate code. It’s slow and in some task not useful. On the world there are many other languages that are fast nad powerful. We decide which language is best for our task.
Thank you for your response. I hope that one day you will create your own repository and publish it. I also prepare experiment related to EEG so maybe I will use it. I agree that everybody does mistakes even if he/she works as a senior developer, because, as your wrote, we are not machines but human beings. You gave a link to very interesting article.
Delete1. What is your opinion about using programming language libraries by people who are not experienced in programming, e.g. by psychologists?
ReplyDeleteI think it’s a great strength of open source programing languages, that provide such opportunities for less advanced programmers, sometimes people starts theirs programing adventures by using some specific library prepared for they case. Than they find it interesting and use full, and in many cases programing become they tool to develop new, more advanced experiments. Especially nowadays, when you can find online tutorials for even the most exotic libraries.
2. Do you use your own software when you conduct the experiment or you use some publicly available/commercial software? For example, if you created your own library, you could share a link to it.
For now I didn’t create my own library, but maybe in a future I will be able to bring some addition to an open source community. In terms of second part of your question I’m participating in a research where we use open source library to create our own software in this way it is suited perfectly for experiment need. In my opinion creating a library specified for your own experiment is a great option if you have a skill set to do it, and you didn't find what you need already been created.
3. One can found a lot of libraries for various programming language, e.g., on github. When you look for something and want to use, do you believe, that the library which somebody has uploaded, does not contain mistakes?
When you starts working with open source code you go through the pile of libraries and they documentations. The clear documentation is the first step of selecting good libraries from the bad ones. You can also read the comments of users that already tried working with this piece of code. Beside the programing errors that you will catch due to code crashes, you should run some test examples where you know a priori the results and checked if it match to library outcomes.
4. How do you think, is it possible that Python language will become the only one useful programming language?
Even though I’m a big fan of Python language I don’t think it will become the only useful one. There is a use for many different programing languages depend on what's the solution application, the languages will change and evolve through years, because there will always be the one that suits better the specific need.
Thank you for your answers. Nowadays, there are lot of opportunities to start programming, as you wrote, but I think, that if somebody takes a ready solution from the tutorial, clicks “Go” and he/she does not understand anything else – it is not very convinient situation because she cannot modify and adjust anything either. I agree with you that creating your own functions/libraries is a good solution for people who have a big knowledge and programming skills and such problem has not been solved.
Delete1. What is your opinion about using programming language libraries by people who are not experienced in programming, e.g. by psychologists?
ReplyDeleteI haven't seen anything created by psychologists, but seen many custom solutions created by other non-programmers. Sometimes those are very peculiar solutions, something akin to cathedral model made entirely out of matches. Some of the common traits are:
- repetitions: experienced programmer would immediately introduce some higher level concept to hide repetitive parts
- maintainability: it's a bit related to previous one. When a programmer inherits work of a programmer before him, she usually curses a bit, whines about the style, but - overall - can take over. In case of such custom solutions, it's usually impossible for other person to continue the work
- re-inventing the wheel: many problems that has known optimal solutions, are solved in sub-optimal ways. All those sub-optimal ways has been tried and analysed before by many computer scientists, but non-programmers don't have time to dig thru literature, or don't know how to formulate a question (google query)
2. Do you use your own software when you conduct the experiment or you use some publicly available/commercial software? For example, if you created your own library, you could share a link to it.
I'm building my experiments on top of proven libraries. I have no resources to create solutions from the scratch, an results would be mediocre at best.
3. One can found a lot of libraries for various programming language, e.g., on github. When you look for something and want to use, do you believe, that the library which somebody has uploaded, does not contain mistakes?
I know it contains bugs. One of first things I do when checking new library is looking into its bug tracker. When I see glaring bugs lingering there for months, I know it's bad.
4. How do you think, is it possible that Python language will become the only one useful programming language?
One doesn't know. After all, we live in a world where car power supply standard is "car lighter", and we are charging phones over micro-USB ports. It's all about being available in right time, rather than being best solution. But I hope there will be around 4 major programming languages and lots of experimental/niche ones forever.
Thank you for your answer. I like your answer for question number one. I agree with you – the programmer is the person who has to know the idea of programming and not to do such mistakes which you listed. If somebody creates software and does not have an experience in programming, he/she can do mistakes described by you examples.
Delete1. I think helping those people to create an application that suits them is good idea. If the interface and how to use such a library is simple, why not? Often, when working on a project for some specific environment, e.g. medical, psychological, accountant, IT specialists often have to ask about requirements, solutions relevant to a given field and problem. If the accountant could make himself the application he needs for faster invoicing with the functionalities he needs, it would certainly save him and the time and money spent on behalf of this company.
ReplyDelete2. During my research, I use only commercial software.
3. A difficult question. If a given library is made available by a private person who is not a known person in the world of science, I expect that such code may contain errors. When I want to use such a library or solution, I am looking for opinions, comments from other users, are they satisfied and if they found any errors. We must also remember that even large companies will sometimes release something that is not fully tested. So, we must always be attentive when using new solutions.
4. Rather not. There is a reason that we have many programming languages that we use depending on our preferences or problem. Certain solutions are easier to implement in one language than in another. In addition, all languages are developing, and new ones are emerging. Maybe someday someone will create an even better programming language than Python. The big advantage of Python, which gives him supporters is the huge number of libraries and the ease of writing in it.
Thank you for your answers. I agree with you but if you do not know anything about programming it could be difficult for you to use it in a proper way. Fortunately, there is some software which has a graphical interface and you can use it like an application but it is a tool. Nowadays, there are lots of possibilities to learn programming so it is not so complicated to learn the basics about programming.
DeleteIt all depends on a library. For some there may be nothing wrong in being "just" a high level user and for other it may makes a little sense to use it without any insight on the internal workings. Once I've seen an article about processing financial data in a form of images of charts with 2D Convolutions and authors argument that they had to use images because there was no other way to use a network they've found on the internet. Indeed it could be impossible to use that specific network with one dimensional data, but still the "workaround" was funny and pointless.
ReplyDeleteAnother thing is that a tool should be practical. Sometimes it's easy to use some high level libraries to solve a problem at hand and sometimes it's easier to learn Assembler than trying to hack a library to perform some very specific task.
During my research I'm trying to use high level APIs as much as possible to not reinvent the wheel from scratch. But I also write my own libraries. Here's the one for experimenting with robustness of Natural Language Processing models:
https://github.com/MI2DataLab/WildNLP
Unfortunately most of the libraries have some bugs, even the ones supported by large communities can't be 100% trusted. But this is one of the concepts of open software, everyone is responsible for it, if someone discovers a bug he can fix it. Over time the software will get better and better. Therefore the popularity can be a good indicator whether to trust a given library or not.
Probably not, there will always be a trade off between user friendliness and ability to perform very specific tasks optimized for a given hardware.
Thank you for your answer. We had a course Natural Language Processing and I did not know that there are people on PhD studies in PJATK who Deal about this topic :D It was very interesting subject for me and I will see your library in my free time. Everybody makes mistakes so we can help each other to find and then fix the error and make that world of IT will contain the less number of mistakes.
Delete1. What is your opinion about using programming language libraries by people who are not experienced in programming, e.g. by psychologists?
ReplyDeleteI'm a big fan of multidisciplinary science approach in which we operate as a team and every member can do best on their field.
2. Do you use your own software when you conduct the experiment or you use some publicly available/commercial software? For example, if you created your own library, you could share a link to it.
In our research, we use the OpenFace project which is a state-of-the-art library for facial expressions recognition. It's working pretty accurate and stable!
3. One can found a lot of libraries for various programming language, e.g., on github. When you look for something and want to use, do you believe, that the library which somebody has uploaded, does not contain mistakes?
It's worth to be aware of limitations of the technology that we use, however hidden bugs are something that could occur. I think that's why it's so important to write about used tools in publications, so others could verify it and recreate the experimental setup.
4. How do you think, is it possible that Python language will become the only one useful programming language?
I'd say that this is a possiblity with a low level of probability.
Thank you for your response. Nowadays, most of teams are multidisciplinary so there is a huge probability that there will be at least one programmer but there are situations that there are for example team of psychologist especially in social science universities and then I think there is a problem. There are lot of software than has a graphical interface and you can click everything but for example PyPsysho does not have such option.
Delete1. What is your opinion about using programming language libraries by people who are not experienced in programming, e.g. by psychologists?
ReplyDeleteI believe that the official libraries available in the repositories are the most suitable for use by every person, even an experienced programmer. Ready libraries significantly simplify and accelerate work on your own program. It is important that the person using them is at least partially aware of what is expected with their use.
2. Do you use your own software when you conduct the experiment or you use some publicly available/commercial software? For example, if you created your own library, you could share a link to it.
When writing programs, I try to use ready-made libraries, but from reliable sources. for example, the determinant of a good library might be the number of downloads and the rating of other users. In case of any doubts I am looking for another one similar to the previous one and I adapt it to my own needs.
3. One can found a lot of libraries for various programming language, e.g., on github. When you look for something and want to use, do you believe, that the library which somebody has uploaded, does not contain mistakes?
As I wrote earlier, the library may contain errors and if it is publicly available, some user will notice this very quickly. in addition, I try to check program operation using other libraries and compare results.
4. How do you think, is it possible that Python language will become the only one useful programming language?
There are currently thousands of programming languages and I doubt Python will take over all aspects of programming. The use of a language depends primarily on the complexity of the problem to be solved. We have HTML (some people think HTML is not a language) for creating websites where python is completely unsuitable. Another example is low-level languages (Assembler and its variants), which is created specifically for a particular type of wet processor. It has its own mnemonics that Python doesn't have at all.
Thank you for your answers. I also see how many times the library was downloaded, read the comments, and see the rating of this library. You are right that if you publish the library, somebody can help you finding the errors which you can fix! Many people are afraid of situation that they will publish something and other people will write that it is worth noting.
Delete1. In my opinion when solutions in such libraries are quite simple and contain all the neccessary documentation, then not a lot of time is needed to learn the language even by a person who are not experienced in programming and therefore such person can use programming language libraries.
ReplyDelete2.
As well as Piotr I am using OpenSeasame library. Also during conducting the experiment I am using the software which write down the EEG signal – we don’t have another opportunity at this moment, because each signal has its own close size.
At everyday work some part of excercises I can solve with the help of finished libraries, but some part of the scripts I must write on my own. I am also the co-author of an application for some sort of researches, but until we publish it, unfortunately I can’t share with You a link to it.
3. I know that mistakes are happening quite often. For example I found one little mistake in the Python library, but this mistake didn’t have a major impact on the experiment I was conducting.
4. I am certain that there is no way that Python language will become the only useful programming language. Every language has its own spectrum of usage, therefore it is not possible to fullfill all the experctations by just one language.
Thanks you for your response. I hope that you will publish your co-authored library and I could download it and use it on my experiments. I am looking forward :D I think similar to you that Python will not become the only one useful language. I suppose that within several years, the new language will appear and replace Python.
Delete1. What is your opinion about using programming language libraries by people who are not experienced in programming, e.g. by psychologists?
ReplyDeleteI don't know - right now everybody can 'learn to code' and e.g. lift themselves out of poverty. But maybe, as the field 'matures' we'll get licenses for programming. Without them, you won't be able to get a compiler or an interpreter.
2. Do you use your own software when you conduct the experiment or you use some publicly available/commercial software? For example, if you created your own library, you could share a link to it.
I need to write glue code to perform specific tasks. There's not much here (yet): https://github.com/tgandor/urban_oculus - but IMO, you should neither use boxed solutions from other people, nor write everything from scratch.
3. One can found a lot of libraries for various programming language, e.g., on github. When you look for something and want to use, do you believe, that the library which somebody has uploaded, does not contain mistakes?
No, you can never be 100% sure. But the bug can be not easy to find. However, it's best to first check if something works OK.
4. How do you think, is it possible that Python language will become the only one useful programming language?
Well, JS still stands, but Python has already put to death some languages: Perl, Ruby, R, it's pushing aside Matlab, Lua, Scheme... Although it's probably Twitter who damaged Ruby on Rails with their incompetence. I'm a fan of Python myself, so the more the merrier, but there's also a cost of popularity: more programmers means more bad programmers.